博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):
二、SQL语句映射文件(1)resultMap
以sql文件为例说明:
<?xml version="1.0" encoding="UTF-8"?>
<!-- namespace指定该sql映射文件对应的接口文件,全限定类名 -->
<mapper namespace="org.spring.springboot.dao.master.sqlDao">
<!-- resultMap 描述如何从结果集中拿出对象,id为标识,方便全局调用,type为对应类全限定类名。
指定要接收的集
-->
<resultMap id="BaseResultMap" type="org.spring.springboot.domain.User">
<!-- 主键映射 coulumn表中字段,property类属性字段-->
<id column="id" property="id" />
<!-- 其他属性字段映射 -->
<result column="user_name" property="userName" />
<result column="description" property="description" />
<!-- 代表联合一对一映射查询,即User对象中含有teacherEntity对象成员。
表中字段和类属性映射,
select对应teacherMapper中id为getTeacher的sql语句,可以直接调用。
这样通过联合在得到一个班级实体时,同时映射出班主任实体。
-->
<association property="teacherEntity" column="TEACHER_ID" select="getTeacher"/>
</resultMap>
<!--用来指定要传入的参数集 -->
<parameterMap id="User" type="org.spring.springboot.domain.User"/>
<!-- 先把部分sql语句写出来,在用的时候,可以全局调用 -->
<sql id="Base_Column_List">
id, user_name, description
</sql>
<!--
parameterType 传入参数的类型,全限定类名
-->
<select id="findByName" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<!-- 映入全局sql语句 -->
<include refid="Base_Column_List" />
from user
where id = 1
</select>
</mapper>
老师的SQL映射文件-被上面的调用sql:
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="org.spring.springboot.dao.master.teacherDao">
<resultMap type="TeacherEntity" id="teacherResultMap">
<id property="teacherID" column="TEACHER_ID" />
<result property="teacherName" column="TEACHER_NAME" />
<result property="teacherSex" column="TEACHER_SEX" />
<result property="teacherBirthday" column="TEACHER_BIRTHDAY"/>
<result property="workDate" column="WORK_DATE"/>
<result property="professional" column="PROFESSIONAL"/>
</resultMap>
<select id="getTeacher" parameterType="String" resultMap="teacherResultMap">
SELECT *
FROM TEACHER_TBL TT
WHERE TT.TEACHER_ID = #{teacherID}
</select>
</mapper>