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