mybatis(三):解决属性名和字段名不一致的问题
问题:
- 数据库中字段名和pojo中对应实体类的属性名不一致导致查出来的对应属性值为null
查询时,对应不一致的属性无法查出来,因为从数据库查到数据之后,会根据字段名创建一个user对象,(创建时是mybatis底层整合的,没有用类的set,get和有参构造方法,也就是没有用反射)如果字段名和类属性不一致,创建的类对象这个属性就相当于没有被赋值,也就是null
解决方法:
起别名:很麻烦,而且还需要我们知道数据库存储的数据
1 | select id,name,pwd as password from mybatis.user where id = #{id} |
- resultMap 结果集映射
1
2
3
4
5
6
7
8
9
10
11
12
13<!--结果集映射-->
<resultMap id="userMap" type="com.hanser.pojo.User">
<!--column列,代表数据库中的字段名,property属性,代表实体类中的属性-->
<!--建立需要重新映射的属性和字段的映射关系-->
<result column="pwd" property="password"/>
</resultMap>
<!--通过id查找一个用户-->
<select id="getUserById" resultMap="userMap">
select *
from mybatis.user
where id = #{id}
</select>
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hakurei Reimu!