MyBatis学习笔记-07-ResultMap


解决数据库属性名和和实体类字段名的不一致问题.

在之前,第一篇笔记的注意中 获取到的结果里变为 null是由于数据库属性名和和实体类字段名的不一致,接下来使其具体的解决办法

首先,数据表展示

实体类(此时用户名、密码与数据表中对应属性不同)

public class User {
    private int id;
    private String username;
    private String password;

    //相应的方法省略
}

若不一致导致的结果,展示(调用getUserList方法)

@Test
public void getUserList(){

    try(SqlSession sqlSession = MybatisUtils.getSqlSession();) {
        UserMapper userDao = sqlSession.getMapper(UserMapper.class);

        List<User> userList = userDao.getUserList();

        userList.stream().forEach(System.out::println);

        //            return userList;
    }
}

<select id="getUserList" resultType="user">
    select * from mybatis.user;
    <!-- select id,name,pwd from mybatis.user; -->
</select>

结果发现,username 和 password 值都为null

原因:在执行select id,name,pwd from mybatis.user;语句后的确是 返回正确的数据 (name,pwd都有对应的值(不是null)),但是在映射回User类是 在类中没有找到 pwd和name这两个字段,无法使用 相应的setter方法赋值,由于private String username,password; 默认值 为 null,在我们获取(getter)User类字段时 相应的username,password就为空

为了验证猜想,把初始值改为

private String username = "username";
private String password = "password";

说了原因,接下来就是解决方法了

解决方法.

1.给sql字段起别名.

<select id="getUserList" resultType="user">
    select id,name as username,pwd as password from mybatis.user;
    <!-- select * from mybatis.user; -->
</select>

2.使用ResultMap.

<!-- id 对应ResultMap type对应 映射返回类型 -->
<resultMap id="seletAllUser" type="pojo.User">
    <!-- property:实体类字段  column:数据表属性  -->
    <result property="username" column="name"/>
    <result property="password" column="pwd"/>
</resultMap>
<select id="getUserList" resultMap="seletAllUser">
    select * from mybatis.user;
</select>

结果映射(ResultMap).

resultMap 元素是 MyBatis 中最重要最强大的元素。

ResultMap的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
MyBatis学习笔记-06-生命周期和作用域 MyBatis学习笔记-06-生命周期和作用域
作用域(Scope)和生命周期.理解不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。 提示 对象生命周期和依赖注入框架 依赖注入框架可以创建线程安全的、基于事务的 SqlSessio
2020-07-24 liuminkai
下一篇 
MyBatis学习笔记-05-配置解析 MyBatis学习笔记-05-配置解析
配置解析.1、核心配置文件. mybatis-config.xml(文件名:可以更改,官方推荐这个) 配置文档的顶层结构如下: configuration(配置) properties(属性) settings(设置
2020-07-24
  目录