0
点赞
收藏
分享

微信扫一扫

MyBatis学习笔记(四)。ResultMap结果集映射。

眸晓 2022-01-31 阅读 73

文章目录


官方文档:

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高级结果集映射

待更新…

举报

相关推荐

0 条评论