文章目录
官方文档:
https://mybatis.net.cn/getting-started.html
1. ResultMap结果集映射
我们之前的实体类UserMapper中属性的名字和数据库字段名是一致的,所以不需要映射,但是当我们实体类中属性名字和数据库中字段不一致的时候,就需要用到ResultMap结果集映射。
1.1 不一致时出现的问题
数据库字段名为id,name,pwd,我现在在实体类中将pwd写成了password,看看会出现什么情况。
User.java,这里省略get和set方法,以及构造器,自行补充完整。
public class User {
private int id;
private String name;
private String password;
}
UserMapper.xml为:
<select id="getUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
通过id查询用户的时候返回值为:
User{id=4, name='李五', password='null'}
发现password返回值为null。
1.2 解决方式一(不推荐)
改造UserMapper.xml
<select id="getUserById" parameterType="int" resultType="user">
select id,name,pwd as password from user where id = #{id}
</select>
1.3 解决方式二(ResultMap结果集映射)
梳理:
数据库中的字段名:id,name,pwd
实体类中的属性名:id,name,password
发现pwd和password不一致,那么我们将pwd映射成password就好了。
修改我们的UserMapper.xml。
<resultMap id="userMap" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserById" parameterType="int" resultMap="userMap">
select * from user where id = #{id}
</select>
最终UserMapper.xml如下:
<?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.xxc.dao.UserMapper">
<resultMap id="userMap" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserById" parameterType="int" resultMap="userMap">
select * from user where id = #{id}
</select>
</mapper>
2. ResultMap高级结果集映射
待更新…