文章目录
- 前言
- 一、``是什么?
- 二、准备工作
- 1.创建pojo
- 2.Controller
- 3.Service
- 4.dao
- 三. xml
- 需要注意的点
前言
之前一直都是拿来主义,直接用逆向工程生成sqlxml,昨天浅浅研究了一下 <resultMap>
的使用。
一、<resultMap>
是什么?
<resultMap>
元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来, 并在一些情形下允许你做一些 JDBC 不支持的事情。 实际上,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。 ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行了。
二、准备工作
1.创建pojo
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
<?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.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>标签用来一对多 <association>标签用来一对一 -->
<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>
需要注意的点
<collection>
标签用来一对多<association>
标签用来一对一column
一定要对应自己sql中查询出来的字段 如果没有as
起别名,就和数据库中字段名保持一致.如果用as
起别名了 一定要对应自己起的别名<collection>
标签中 表示的一对多
中的多
,column
属性的名称 一定不要和一对多
中的一
中的column
相同,否则查询出来的多
会被覆盖成一
最后
以上就是怕孤独春天最近收集整理的关于浅谈mybatis中<resultMap>的使用前言一、
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复