0
点赞
收藏
分享

微信扫一扫

Mybatis---复杂sql应用

哈哈镜6567 2022-04-04 阅读 40

1、多对一处理

  • 编写实体类

    package com.ss.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data 
    @NoArgsConstructor
    @AllArgsConstructor
    public class Student {
        
        private int id;
        private String name;
        private Teacher teacher;
    }
    
    package com.ss.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Teacher {
        
        private int id;
        private String name;
        
    }
    
  • 编写工具类 MybaitsUtils

  • 编写配置文件

  • 编写实体类对应的Mapper接口 和 Mapper.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.ss.dao.StudentMapper">

    <!--
        1.查询出所有学生的信息
        2.根据tid,查询对应的老师
    -->
    <select id="getAllStudent" resultMap="StudentTeacher">
        select * from student
    </select>

    <resultMap id="StudentTeacher" type="Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <!--复杂的属性   子查询
                对象:association
                集合:collection
        -->
        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
    </resultMap>

    <select id="getTeacher" resultType="Teacher">
        select * from teacher where id = #{id}
    </select>
<!--====================================================================================================-->
    <!--嵌套查询-->
    <select id="getAllStudent2" resultMap="StudentTeacher2">
        select s.id sid,s.name sname,t.name tname,t.id tid 
        from student s,teacher t 
        where s.tid = t.id
    </select>
    <resultMap id="StudentTeacher2" type="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <association property="teacher" javaType="Teacher">
            <result property="id" column="tid"/>
            <result property="name" column="tname"/>
        </association>
    </resultMap>
</mapper>
  • 编写测试类

2、一对多处理

  • 编写实体类

    package com.ss.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.util.List;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Teacher {
        
        private int id;
        private String name;
        private List<Student> students;
        
    }
    
    package com.ss.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Student {
        
        private int id;
        private String name;
        private int tid; 
    }
    
  • 编写工具类 MybaitsUtils

  • 编写配置文件

  • 编写实体类对应的Mapper接口 和 Mapper.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.ss.dao.TeacherMapper">
        
    <!--嵌套查询-->
        <select id="getTeacher" resultMap="TeacherStudent">
            select s.id sid,s.name sname ,t.name tname ,t.id tid
            from teacher t,student s
            where s.tid = t.id and t.id = #{tid}
        </select>
        <resultMap id="TeacherStudent" type="Teacher">
            <result property="id" column="tid"/>
            <result property="name" column="tname"/>
            <collection property="students" ofType="Student">
                <result property="id" column="sid"/>
                <result property="name" column="sname"/>
                <result property="tid" column="tid"/>
            </collection>
        </resultMap>
    <!--====================================================================================================-->
        <!--子查询-->
        <select id="getTeacher2" resultMap="TS">
            select * from teacher where id = #{tid}
        </select>
        <resultMap id="TS" type="Teacher">
            <result property="id" column="id"/>
            <result property="name" column="name"/>
            <collection property="students" ofType="Student" javaType="ArrayList" select="getStudentByid" column="id"/>
        </resultMap>
        <select id="getStudentByid" resultType="Student">
            select * from student where tid = #{tid}
        </select>
    </mapper>
    
  • 编写测试类

举报

相关推荐

0 条评论