浅谈mybatis中<resultMap>的使用

浅谈mybatis中<resultMap>的使用,第1张

文章目录
  • 前言
  • 一、``是什么?
  • 二、准备工作
    • 1.创建pojo
    • 2.Controller
    • 3.Service
    • 4.dao
  • 三. xml
  • 需要注意的点


前言

之前一直都是拿来主义,直接用逆向工程生成sqlxml,昨天浅浅研究了一下 的使用。


一、是什么?

元素是 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

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>

需要注意的点
  1. 标签用来一对多 标签用来一对一
  2. column 一定要对应自己sql中查询出来的字段 如果没有as起别名,就和数据库中字段名保持一致.如果用as起别名了 一定要对应自己起的别名
  3. 标签中 表示的一对多中的 ,column 属性的名称 一定不要和一对多中的中的column 相同,否则查询出来的会被覆盖成

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/724142.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存