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

    科技2022-08-17  106

    方法一、起别名

    比如我有一个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对象的属性是一致的

    Processed: 0.016, SQL: 9