方法一、起别名
比如我有一个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对象的属性是一致的