Mybatis:解决属性名和字段名不一致的问题

5.解决属性名和字段名不一致的问题 resultMap

5.1问题

在UserMapper.xml中的一个标签中,如select标签,

<select id="getUserList" resultType="com.ariverh.pojo.User">
    select * from mybatis_study.user;
</select>

如果User类中的属性名和数据库中的user的字段名不一致时,那么当我们查询的时候那么不一致的字段查询到的值就不会赋值给User属性的值,那么该属性值就为空。

那么我们该如何解决这个问题呢?

方法一:在查询时给字段取别名。

select id as userId,name as UserName,age as UserAge from mybatis_study.user;

方法二:使用结果映射(resultMap),通过结果姐映射将不同字段映射到不用类的属性上。

5.1解决问题resultMap

在之前的返回值类型中,我们都是用resultType类指定返回值的类型,这样Mybatis会帮我们自动映射属性,即只有当类的属性名和字段名相同时,才存在映射关系。

<select id="getUserList" resultType="com.ariverh.pojo.User">
    select * from mybatis_study.user;
</select>

如果我们属性名和字段名不同那么我们就需要用resultMap

<resultMap id="UserMapper" type="com.ariverh.pojo.User">
    <result property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="userAge" column="age"/>
</resultMap>

<select id="getUserList" resultMap="UserMapper">
    select id,name,age as userAge from mybatis_study.user;
</select>

上述的resultMap中id为该resultMap标识,select可以通过resultMap等于id名获得对应的resultMap。从而获得结果集映射。这样就解决了属性名和字段不一致的问题。

在resultMap标签中的result子标签,里面代表每个映射,property为属性名,colunm为字段名。一个resultMap可以有多个映射。但是我们发现,当我们字段名和属性名相同时,我们就用在resultMap中进行映射了,因为mybatis会帮我们映射字段名和属性名相同的部分。

这里我们只是简单的一对一映射,后面我们会讲述更难和复杂的映射关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值