关于mybaits,用实体类映射和用map映射查询数据库结果集的区别

实体类:

package com.fy.model;

import lombok.Data;

import java.io.Serializable;
@Data
public class User implements Serializable{
    private static final long serialVersionUID = -8736616045315083846L;

    private Integer id;

    private String username;

    private String password;

    private Integer enable;

}

 

mapper接口:

package com.fy.mapper;

import com.fy.model.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Map;

@Repository
public interface TestMapper {

     Map getUserMap(@Param("id") int id);

     User getUser(@Param("id") int id);
}

mapper,xml:





  

  

controller:

package com.fy.controller;

import com.fy.mapper.TestMapper;
import com.fy.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2019/5/12.
 */
@Controller
public class MyController {

    @Autowired
    private TestMapper testMapper;

    @RequestMapping("/test")
    @ResponseBody
    public Map test(int id){
        User user = testMapper.getUser(id);
        Map userMap = testMapper.getUserMap(id);

        Map map=new HashMap();
        map.put("user",user);
        map.put("userMap",userMap);
        return map;
    }
}

user表数据:

关于mybaits,用实体类映射和用map映射查询数据库结果集的区别_第1张图片

测试id=21的查询结果:

关于mybaits,用实体类映射和用map映射查询数据库结果集的区别_第2张图片

db中全部都有数据,那么用实体类映射或者是用map映射都没问题,数据完整。

测试id=22的查询结果:

关于mybaits,用实体类映射和用map映射查询数据库结果集的区别_第3张图片

遇到这种的db中数据不完整的,实体类映射属性完整,值可能为null;但是map映射的,为null的没有映射出来,在项目中可能会遇到一些问题。

遇到这种问题,map可以用 IFNULL() 解决,但是推荐实体类映射:

修改mapper.xml:

  

测试id=22的查询结果:

关于mybaits,用实体类映射和用map映射查询数据库结果集的区别_第4张图片

现在map中“password”有属性,值为空字符串。

查询为不存在的记录的时候,两者都为null。

你可能感兴趣的:(关于mybaits,用实体类映射和用map映射查询数据库结果集的区别)