我是靠谱客的博主 怕孤独春天,这篇文章主要介绍浅谈mybatis中<resultMap>的使用前言一、是什么?二、准备工作三. xml需要注意的点,现在分享给大家,希望可以做个参考。

文章目录

  • 前言
  • 一、``是什么?
  • 二、准备工作
    • 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>

需要注意的点

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

最后

以上就是怕孤独春天最近收集整理的关于浅谈mybatis中<resultMap>的使用前言一、是什么?二、准备工作三. xml需要注意的点的全部内容,更多相关浅谈mybatis中<resultMap>的使用前言一、是什么?二、准备工作三.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部