MyBatis 的xml文件中关于pojo映射的问题
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
但是在MyBatis 的使用过程中,难免不会遇到绞尽脑汁的坑,坑不深,但是掉下去很痛。
在说问题之前,我们先了解下POJO–POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。
MyBatis在xml文件中配置查询的结果如果要映射到相应的POJO上,那么需要保证:
- 数据库表的字段名称应该与POJO对象的属性名称一致
- 在MyBatis配置文件中开启自动驼峰命名规则
然鹅,时候只能保证大部分能够直接在Mybatis 的resultType 属性中自动映射为相应的pojo。如果你的字段带有下划线呢,例如:
class User{
private String u_user_id;
private String u_user_name;
}
这样的pojo对象,那么通过mybatis映射回来的结果只能是null;
这个时候我们不用修改数据表字段或者对象属性名称,也不需要别名,我们需要用Mybatis的XML属性<resultMap type="" id=""></resultMap>
解决
<resultMap id="MyResultMap" type="User">
<id column="u_user_id" jdbcType="VARCHAR" property="u_user_id" />
<result column="u_user_name" jdbcType="VARCHAR" property="u_user_name" />
</resultMap>
好了,这样就完美解决了,至于为什么mybatis会出现这样的问题,那就是它映射POJO的原理造成的啦,有兴趣的朋友可以看下源码了解一下。
水平有限,只是解决实际业务中遇到问题的方法。