前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis 使用注解方式实现一对多

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

作者头像
用户10521079
发布2023-05-04 18:01:18
2690
发布2023-05-04 18:01:18
举报
文章被收录于专栏:Smile博客Smile博客
代码语言:javascript
复制
//学生po
public class Student {
     
     //学生id 主键      
     private Long id;
     
     //学生姓名  
     private String name;

   //getter and setter ...
 
}

代码语言:javascript
复制
//老师po
public class Teacher {
     
     //老师id 主键      
     private Long id;
     
     //老师姓名  
     private String name;
   //getter and setter ...
}
代码语言:javascript
复制
//老师 vo
public class TeacherVO extends Teacher {

    //学生list 因为 教师:学生 = 1 : n
    private List<Student> students;

  // getter and setter ...

}
代码语言:javascript
复制
//关系表po
public class Relation {

    /* 主键 */
    private Long id;

    /* 学生id */
    private Long sid;

    /* 教师id */
    private Long tid;
    
    // getter and setter ...
}
通过关系表,连接学生表和教师表,根据id获取各自的姓名,基本业务:查询所有老师下的所有学生
手绘的...凑合看吧 哈哈,因为一个老师下有多个学生,所以在老师的实习类里声明一个学生list属性,就像上述代码一样,建立一个Vo去继承老师的实体类,下面的mapper代码是重点:
代码语言:javascript
复制
//关系表 Mapper接口
public interface RelationMapper {
@Select(&quot;select id,name from TEACHER&quot;)
@Results({@Result(property = &quot;id&quot;,column = &quot;id&quot;),
        @Result(property = &quot;name&quot;,column = &quot;name&quot;),
        @Result(property = &quot;students&quot;,javaType = List.class,column =&quot;id&quot;,
                many = @Many(select = &quot;com.example.mapper.RelationMapper.findStudents&quot;))})
List&lt;TeacherVo&gt; findTeacherAndStudents();

@Select(&quot;select s.name from RELATION r,STUDENT s where s.id = r.sid and r.tid = #{tid}&quot;)
List&lt;Student&gt; 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 findStudents(Long tid) 中接到传递过来的id 并赋值给sql语句中 #{tid}
这样就完成了,老师学生通过关系表完成1对多。
在对应的实现类中,实现findTeacherAndStudents()方法即可,控制层同理~

layui对后台传来的的roles集合进行遍历展示职位:
userlimit.html部分代码
{field: 'id', title: '序号', sort: true, fixed: 'left'}
, {field: 'no', title: '工号'}
, {field: 'name', title: '姓名', sort: true}
, {field: 'roles', title: '职位', sort: true, templet:function(info){
    var rlist = info.roles;
    var infos = "";
    for(var i = 0; i < rlist.length; i++){
        infos = infos + " "+rlist[i].info;
    }
    return infos;
    }}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通过关系表,连接学生表和教师表,根据id获取各自的姓名,基本业务:查询所有老师下的所有学生
  • 手绘的...凑合看吧 哈哈,因为一个老师下有多个学生,所以在老师的实习类里声明一个学生list属性,就像上述代码一样,建立一个Vo去继承老师的实体类,下面的mapper代码是重点:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档