假设我们的数据库字段和映射pojo类的属性字段不一致,那么查询结果,不一致的字段值会为null
例如:🧇
此为pojo类的属性字段:
private int id; private String name; private String pwd;
此为数据库字段:
那么现在我们执行查询操作,查询所有用户:
User{id=2, name='limei', pwd='null'} User{id=3, name='dada', pwd='null'} User{id=4, name='meimei', pwd='null'} User{id=5, name='titi', pwd='null'}
可以看到密码全部为null
如何解决此问题呢?
可以使用Mybatis ResultMap 结果集映射:😊
resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
<resultMap id="UserMap" type="User"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="password" property="pwd"/> </resultMap> <select id="getUserList" resultMap="UserMap"> select * from mybatis.user </select>
select中resultMap属性对应resultMap中的id属性
每一个result标签需要标明 column(数据库列名)和property(实体类属性名)的映射
再次运行测试类查询,大功告成!🙌
User{id=2, name='limei', pwd='456789'} User{id=3, name='dada', pwd='1234567890'} User{id=4, name='meimei', pwd='admin'} User{id=5, name='titi', pwd='password'}