Version: Next
ResultMap
新建一个项目,拷贝之前的,测试实体类字段不一致的情况
新建模块mybatis03,重新导入父工程pom.xml文件
将mybatis02的配置文件复制粘贴
复制src下的文件
复制test下的文件
修改Pojo属性名
public class User implements Serializable {private int id;private String name;// private String password;private String pwd;}还能查出数据,但是password字段的值全变成了null
#返回结果User(id=1, name=改名的, pwd=null)User(id=2, name=狂神2, pwd=null)User(id=3, name=map来的, pwd=null)User(id=4, name=狂神1, pwd=null)解决方法:
起别名
<select id="getUserById" resultType="com.bsx.pojo.User" parameterType="int">SELECT id, name, password as pwd FROM USER WHERE id = #{id}</select>ResultMap
ResultMap——结果集映射
结果集映射
数据库: id name password
实体类: id name pwd
将数据库的表示形式变为实体类的表示形式
配置mapper.xml,将数据库字段映射为实体类属性
<mapper namespace="com.bsx.dao.UserMapper">
<!-- 结果集映射-->
<resultMap id="UserMap" type="com.bsx.pojo.User">
<!-- colum数据库种的字段, property实体类种的属性-->
<!-- <result column="id" property="id"/>-->
<!-- <result column="name" property="name"/>-->
<result column="password" property="pwd"/>
</resultMap>
<select id="getUserById" resultMap="UserMap">
<!-- SELECT * FROM USER WHERE id = #{id} -->
SELECT * FROM USER WHERE id = #{id}
</select>
</mapper>
结果映射
resultMap
元素是Mybatis中最重要最强大的元素。它可以让你从90%的JDBCResultSets
数据提取代码中解放出来,并在一些情况下允许你进行一些JDBC不支持的操作。ResultMap的设计思想是,对于简单的语句根部不需要配置显示的结果映射,而对于复杂一点的语句只需要描述他们的关系就行了
ResultMap
最优秀的地方在于,虽然你已经对他相当了解了,但是根本就不需要显式的用到他们
使用流程:
- 在
mapper.xml
里新建resultmap
标签,设定从数据库字段到实体类属性的映射 - 在
mapper.xml
中引用resultMap
标签的语句中使用resultMap
属性,不再使用resultType
但更复杂的地方在后面多对一,一对多,多对多