1、两个表关联查询映射:
1.1、StudentMapper.xml 相关代码
<resultMap id="list" type="com.aibaiyang.idemo.dto.StudentCourseDTO"> </resultMap>
<select id="findByName" parameterType="com.aibaiyang.idemo.entity.Student" resultMap="list"> SELECT s.id id,s.name `name`,c.`name` course_name FROM student s INNER JOIN course c ON s.course_id = c.id WHERE 1 = 1 <if test="name != null and !"".equals(name.trim())"> and s.name like CONCAT(‘%‘,#{name},‘%‘) </if> <if test="courseId != null"> and s.course_id = #{courseId} </if> </select>
1.2、application.yml 配置文件设置下划线转驼峰
mybatis: configuration: map-underscore-to-camel-case: true
1.3、StudentCourseDTO 类:
package com.aibaiyang.idemo.dto; import lombok.Data; /** * @Author zhong guo * @Date 2019/10/6 12:38 * @description **/ @Data public class StudentCourseDTO { private Integer id; private String name; private String courseName; }
2、主表关联子表:
2.1、StudentMapper.xml 相关代码
<resultMap id="BaseResultMap" type="com.aibaiyang.idemo.dto.StudentCourseOutput" > <id column="s_id" property="id" jdbcType="INTEGER" /> <result column="s_name" property="name" jdbcType="VARCHAR" /> <collection property="courses" resultMap="CourseMapper.BaseResultMap" /> </resultMap> <select id="findAll" resultMap="BaseResultMap"> SELECT s.id s_id, s.`name` s_name, c.id c_id, c.code, c.`name` c_name FROM student s INNER JOIN course c ON s.course_id = c.id </select>
2.2、CourseMapper.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="CourseMapper" > <resultMap id="BaseResultMap" type="com.aibaiyang.idemo.entity.Course" > <id column="c_id" property="id" jdbcType="INTEGER" /> <result column="code" property="code" jdbcType="VARCHAR" /> <result column="c_name" property="name" jdbcType="VARCHAR" /> </resultMap> </mapper>
2.3、StudentCourseOutput 类:
package com.aibaiyang.idemo.dto; import com.aibaiyang.idemo.entity.Course; import lombok.Data; import java.util.List; /** * @Author zhong guo * @Date 2019/10/6 15:37 * @description **/ @Data public class StudentCourseOutput { private Integer id; private String name; private List<Course> courses; }
其中 <collection property="courses" resultMap="CourseMapper.BaseResultMap" /> 的
property="courses"对应 private List<Course> courses;
resultMap="CourseMapper.BaseResultMap" 对应CourseMapper命名空间下的BaseResultMap;
3、项目地址:idemo-mybatis
原文:https://www.cnblogs.com/aibaiyang/p/11628436.html