
- 前言
- 一、``是什么?
- 二、准备工作
- 1.创建pojo
- 2.Controller
- 3.Service
- 4.dao
- 三. xml
- 需要注意的点
前言
之前一直都是拿来主义,直接用逆向工程生成sqlxml,昨天浅浅研究了一下 的使用。
一、
是什么?
元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情。 实际上,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。 ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行了。
Student:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private Integer age;
private Integer teacherId;
}
Teacher:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
private Integer id;
private String name;
private Integer age;
private List<Student> students;
}
2.Controller
代码如下(示例):
@RestController
@RequestMapping("teacher")
@Slf4j
public class TeacherController {
@Autowired
private TeacherService teacherService;
@GetMapping("teacherList")
public ResultBean teacherList(){
List<Teacher> allTeacher = teacherService.getAllTeacher();
return ResultBean.ok(allTeacher);
}
@GetMapping("teacherWithStudent")
public ResultBean teacherWithStudent(){
List<Teacher> allTeacher = teacherService.getTeacherWithStudent();
return ResultBean.ok(allTeacher);
}
}
3.Service
public interface TeacherService {
List<Teacher> getAllTeacher();
List<Teacher> getTeacherWithStudent();
}
4.dao
public interface TeacherDao {
List<Teacher> getAllTeacher();
List<Teacher> getTeacherWithStudent();
}
三. xml
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.wyl.dao.TeacherDao">
<resultMap id="teacher" type="com.wyl.model.Teacher">
<id property="id" column="id">id>
<result property="name" column="name">result>
<result property="age" column="age">result>
<result property="grade" column="grade">result>
<collection property="students" ofType="com.wyl.model.Student" javaType="java.util.List">
<id property="id" column="sid">id>
<result property="name" column="sname">result>
<result property="age" column="sage">result>
collection>
resultMap>
<select id="getAllTeacher" resultType="com.wyl.model.Teacher">
select *
from teacher
select>
<select id="getTeacherWithStudent" resultMap="teacher">
select t.*, s.id as sid, s.name as sname, s.age as sage
from teacher t
left join student s on t.id = s.teacherId
select>
mapper>
需要注意的点
标签用来一对多标签用来一对一column一定要对应自己sql中查询出来的字段 如果没有as起别名,就和数据库中字段名保持一致.如果用as起别名了 一定要对应自己起的别名标签中 表示的一对多中的多,column属性的名称 一定不要和一对多中的一中的column相同,否则查询出来的多会被覆盖成一
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)