resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。

解决数据库中字段和实体类字段名称不一致问题。

5.1 起别名解决

我们可以在sql 中通过 as 起个别名来解决

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.lu.dao.UserMapper">
  6. <select id="queryAllUser" resultType="user">
  7. select id, name, pwd as password
  8. from user;
  9. </select>
  10. </mapper>

5.2 结果集映射

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.lu.dao.UserMapper">
  6. <!--结果集映射-->
  7. <resultMap id="userMap" type="user">
  8. <!-- 自定义映射-->
  9. <result column="pwd" property="password"/>
  10. </resultMap>
  11. <select id="queryAllUser" resultMap="userMap">
  12. select id, name, pwd
  13. from user;
  14. </select>
  15. </mapper>
  • resultMap 和 id 对应
  • column 数据库字段
  • property 实体类字段
  • 将ID 映射为 type
  • resultMap 属性就行了(去掉了 resultType 属性)