详解Mybatis 「resultMap」中的autoMapping属性

<?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.tfjy.sda.mapper.CourseMapper">
    <resultMap id="TopicList" type="com.tfjy.sda.bean.TopicReply" autoMapping="true">
        <id property="id" column="id"></id>
    </resultMap>
    <select id="queryCourse" resultType="com.tfjy.sda.bean.CourseUsers">
         SELECT
            cu.stu_number
         FROM
            course_users cu
        WHERE
            stu_name=#{courseUsers.stuName} AND course_id=#{courseUsers.courseId}
    </select>

</mapper>

resultMap

**resultType的主要作用是将查询结果封装到pojo中。(前提是pojo类中的
属性名和查询到的数据库的字段名保持一致);

如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中。

使用下列语句进行结果的映射:

<id property="id" column="id"></id>
<id property="iu" column="iu"></id>
<id property="ic" column="ic"></id>

pojo:
代表简单无规则java对象
关于pojo详情请查看链接:

https://www.jianshu.com/p/b934b0d72602

autoMapping

主要功能是完成结果集的映射,在映射是会将resultMapping中的字段按照名称相同的方式映射到返回类型的对应属性上,在映射时会自动忽略大小写。比如查询出的字段是Student但是返回类型中有一个属性是student,并且有一个setstudent的方法,这样是可以匹配成功的,能够自动完成映射,将返回的值映射给对应的返回类型中的Id。

autoMapping 共有两个属性 true和false.true表示能够自动映射,false则不会自动映射。

拓展

也可以通过第二种方式完成映射
resultType

 <select id="queryUser" resultType="com.tfjy.sda.bean.CourseUsers">
         SELECT
            cu.stu_number
         FROM
            course_users cu
        WHERE
            stu_name=#{courseUsers.stuName} AND course_id=#{courseUsers.courseId}
    </select>

当我们指定一个查询语句的返回结果是,可以直接指定result Type 也可以指定result Map,实际上mybatis对结果集进行处理时都是通过的resultMap处理,当指定resultType时mybatis会自动生成一个空的resultMap,然后指定其对应的type为我们指定的resultType类型。

Mybatis的自动映射策略默认是开启的,而且默认是只对非嵌套的resultMap进行自动映射。这是通过Mybatis的全局配置autoMappingBehavior参数配置的。它一共有三种取值,分别是NONE、PARTIAL和FULL。

l NONE表示不启用自动映射

l PARTIAL表示只对非嵌套的resultMap进行自动映射

l FULL表示对所有的resultMap都进行自动映射

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Mybatis ResultMap 是一种将查询结果集映射到 Java 对象的技术,它可以自定义对查询结果集的映射方式,使得查询结果集的列与 Java 对象的属性进行映射,从而方便进行数据操作。下面详细介绍一下 Mybatis ResultMap。 ### ResultMap 的定义 ResultMap 的定义可以在 Mapper.xml 文件使用 <resultMap> 标签进行定义,示例代码如下: ```xml <resultMap id="userMap" type="com.example.User"> <id property="id" column="user_id" /> <result property="username" column="user_name"/> <result property="age" column="user_age"/> </resultMap> ``` 其: - `id`:ResultMap 的唯一标识符; - `type`:映射结果集的 Java 类型; - `id` 和 `result`:用来映射结果集的列和 Java 对象的属性,其 `id` 用来映射主键,`property` 表示 Java 对象的属性名,`column` 表示查询结果集的列名。 ### ResultMap 的使用 在 Mapper.xml 文件的 SQL 语句使用 ResultMap,示例代码如下: ```xml <select id="selectUser" resultMap="userMap"> select user_id, user_name, user_age from user where user_id = #{id} </select> ``` 其,`resultMap` 属性指定了使用的 ResultMap 的 id。 ### ResultMap 的继承 Mybatis 还支持 ResultMap 的继承,可以通过 extends 属性来实现。示例代码如下: ```xml <resultMap id="userMap" type="com.example.User"> <id property="id" column="user_id" /> <result property="username" column="user_name"/> <result property="age" column="user_age"/> </resultMap> <resultMap id="userMapWithAddress" type="com.example.User" extends="userMap"> <result property="address" column="user_address"/> </resultMap> ``` 在上面的示例,`userMapWithAddress` 继承了 `userMap`,因此可以使用 `userMap` 定义的映射关系,同时还可以添加自己的映射关系。 ### ResultMap 的自动映射 Mybatis 还支持自动映射,它会根据查询结果集的列名自动匹配 Java 对象属性名,从而省略 ResultMap 的定义。可以使用 `autoMapping="true"` 来启用自动映射。示例代码如下: ```xml <select id="selectUser" resultType="com.example.User" autoMapping="true"> select user_id, user_name, user_age from user where user_id = #{id} </select> ``` 在上述代码,`resultType` 属性指定了映射结果集的 Java 类型,而 `autoMapping` 属性启用了自动映射。 ### 总结 - MybatisResultMap 是将查询结果集映射到 Java 对象的技术; - ResultMap 可以在 Mapper.xml 文件定义,并在 SQL 语句使用; - ResultMap 可以继承,可以自动映射。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值