详解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都进行自动映射

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章