Mybatis中 domain对象的属性名和数据库中的列名不一致的解决办法

方法一、起别名

比如我有一个domain对象中的一个属性叫userName 另一个属性叫 userID

而数据库的列名分别是username和id

当我们在Myabtis中查询这两个属性的值

我们会发现 username的值是可以正常得到的,而userId则为null

原因

因为我使用的数据库是mysql 在windows中是不区分大小写的 而在linux中区分大小写

因此userName可以封装进去

但id属性则不同了 因此我们在Mybatis中的sql语句应该写为

select id as userid from user; 

这样就能正常封装了

方式二、改配置文件

<resultMap id="userMap" type="com.tubai.domain.User">
    <!--如果这个属性是主键 那么用这个-->
    <id property="userID" column="id"></id>
    <!--如果不是主键 那么用这个-->
    <result property="userID" column="id"></result>
</resultMap>
<select id="你的方法名" resultMap="userMap">
    select id from user;
</select>

我们只需要添加一个resultMap

然后将我们原本select中的resultType换成resultMap即可

我的理解就是 做了一个映射 因此就可以正常导入了

具体可以看官方的解释:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#Parameters

综上

显然方式一的执行效率是比方式二高的(毕竟不用映射)

但是方式二的开发效率肯定比方式一高 毕竟不用写那么多次别名…

但是我相信大多数情况我们的列名和domain对象的属性是一致的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值