resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
解决数据库中字段和实体类字段名称不一致问题。
5.1 起别名解决
我们可以在sql 中通过 as 起个别名来解决
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lu.dao.UserMapper">
<select id="queryAllUser" resultType="user">
select id, name, pwd as password
from user;
</select>
</mapper>
5.2 结果集映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lu.dao.UserMapper">
<!--结果集映射-->
<resultMap id="userMap" type="user">
<!-- 自定义映射-->
<result column="pwd" property="password"/>
</resultMap>
<select id="queryAllUser" resultMap="userMap">
select id, name, pwd
from user;
</select>
</mapper>
- resultMap 和 id 对应
- column 数据库字段
- property 实体类字段
- 将ID 映射为 type
- resultMap 属性就行了(去掉了 resultType 属性)