• MyBatis 使用注解方式实现一对多


    //学生po
    public class Student {
         
         //学生id 主键      
         private Long id;
         
         //学生姓名  
         private String name;

       //getter and setter ... }
    //老师po
    public class Teacher {
         
         //老师id 主键      
         private Long id;
         
         //老师姓名  
         private String name;
       //getter and setter ...
    }
    //老师 vo
    public class TeacherVO extends Teacher {
    
        //学生list 因为 教师:学生 = 1 : n
        private List<Student> students;

      // getter and setter ...
    }
    //关系表po
    public
    class Relation { /* 主键 */ private Long id; /* 学生id */ private Long sid; /* 教师id */ private Long tid; // getter and setter ... }

    通过关系表,连接学生表和教师表,根据id获取各自的姓名,基本业务:查询所有老师下的所有学生

    手绘的...凑合看吧 哈哈,因为一个老师下有多个学生,所以在老师的实习类里声明一个学生list属性,就像上述代码一样,建立一个Vo去继承老师的实体类,下面的mapper代码是重点:

    //关系表 Mapper接口
    public
    interface RelationMapper { @Select("select id,name from TEACHER") @Results({@Result(property = "id",column = "id"), @Result(property = "name",column = "name"), @Result(property = "students",javaType = List.class,column ="id", many = @Many(select = "com.example.mapper.RelationMapper.findStudents"))}) List<TeacherVo> findTeacherAndStudents(); @Select("select s.name from RELATION r,STUDENT s where s.id = r.sid and r.tid = #{tid}") List<Student> findStudents(Long tid); }
    @Select("select id,name from TEACHER") 中的id 通过 @Result(property = "students",javaType = List.class,column ="id",传到 many = @Many(select = "com.example.mapper.RelationMapper.findStudents"))})
    在 List<Student> findStudents(Long tid) 中接到传递过来的id 并赋值给sql语句中 #{tid}
    这样就完成了,老师学生通过关系表完成1对多。
    在对应的实现类中,实现findTeacherAndStudents()方法即可,控制层同理~
  • 相关阅读:
    MySQL实用基本操作
    数组经典例题
    Java基础之流程控制
    Java基础之数组详解
    java基础语法(三大基础)
    golang map转json
    go get 无反应、访问github.com速度慢、没反应问题的解决方案
    微信公众平台,微信网页授权,redirect_uri参数错误,解决方法!
    通过 nginx 访问 golang web
    golang 报错信息及解决方法--采坑之路,学习使我快乐
  • 原文地址:https://www.cnblogs.com/MurasakiSeiFu/p/7890599.html
Copyright © 2020-2023  润新知