栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis中的多表操作(查询修改删除)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis中的多表操作(查询修改删除)

写一篇博客致我死去的时间

最近在写一个项目,信息管理方面的,对教师和班级的操作是通过关联表,一开始查询班级和查询班级对应的教师是两个接口,被人指点,发现应该就是一个接口,整体思路出现问题,大改!

目录

多表连查

多表删除

多表修改


多表连查

首先从实体类开始,数据库中没有的字段,但是我又要用到,应该这样做

这就表示数据库中没有这个字段,但是你要用。

在配置文件中用collection来进行分表查询

 findById()这个方法是查询一个班级,而下面selectTeachersByClassId()是查询教师信息,在调用findById这个方法时,selectTeachersByClassId会自动执行,因为findById的resultMap是baseMap,通过id进行关联,达到分表查询的目的,另外,要注意,标签的顺序也是有要求的

下面是代码




    
        
        
        
        
        
        
        
        
    
    
        select id,name from user where id in (select user_id from ref_user_classes where class_id = #{id});
    

 Mapper层

其实 selectTeachersByClassId这个方法写不写到Mapper层都无所谓,有强迫症的就写一下吧

Service层

ServiceImpl层

Controller层 

 查询的难点就在于配置文件中的collection,剩下的都比较中规中矩

看一下postman的测试结果

 

 

多表删除

不仅要删除dic_classes表中的,也要删除关联表中的,不需要自己写什么方法,用mybatis plus 自带的方法加上条件构造器就够了,因为关联表中是没有主键的,所以要用到条件构造器

 

多表修改

多表修改,涉及到关联表的,一般是先删除再增加

关联表的数据库 

tip:先删除再增加就是,比如classId = 12时,teacherList里面原来有id为14,15,16的,现在我要修改成只有14,15的,那么先把关联表中classId = 12 的全都删掉,再把userId(教师id)为14,15的加进去,并且新加进去的14, 15的classId仍为12

那么代码就是这样的

修改时传过来一个实体,可以根据dicClasses的get方法得到我们需要的id,再用set方法给redUserClasses进行赋值

删除还是和上面的一样,增加需要传一个实体类,因为一个班级可以对应多个老师,所以我们for循环一个一个的给userId赋值,且插入到数据库中

postman测试,其中teacherList的传参是要这样传的

 

 

在查资料的时候发现有一个批量插入saveBatch,我不太会用那个,可能是因为这种情况不适合用那个方法,也会继续思考的,有什么新想法可以互相分享

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号