写一篇博客致我死去的时间
最近在写一个项目,信息管理方面的,对教师和班级的 *** 作是通过关联表,一开始查询班级和查询班级对应的教师是两个接口,被人指点,发现应该就是一个接口,整体思路出现问题,大改!
目录
多表连查
多表删除
多表修改
多表连查
首先从实体类开始,数据库中没有的字段,但是我又要用到,应该这样做
这就表示数据库中没有这个字段,但是你要用。
在配置文件中用collection来进行分表查询
findById()这个方法是查询一个班级,而下面selectTeachersByClassId()是查询教师信息,在调用findById这个方法时,selectTeachersByClassId会自动执行,因为findById的resultMap是baseMap,通过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,我不太会用那个,可能是因为这种情况不适合用那个方法,也会继续思考的,有什么新想法可以互相分享
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)