mybatis多表联查
这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】八个方面深度解析后端知识/技能。
大家好,我是IT修真院深圳分院一枚正直纯洁的java程序员。
本篇分享的是:【mybatis多表联查】
(1)背景介绍
在客观世界中,对象很少是孤独存在的,如班级与学生之间的关系,学生与课程之间的关系,它们的实例之间可以互相访问,这就是关联关系。MyBatis 的关联映射可以大大简化持久层数据的访问,关联关系的分类如下:
(2)知识剖析
一对一: 一个班主任只属于一个班级,一个班级也只能有一个班主任
一对多:一个班级有多个学生,一个学生只属于一个班级
多对多:一个学生可以选多门课,一门课可以有多个学生选
(3)常见问题
为什么不建议使用外键把多张表关联起来?
(4)解决方案
若是高并发大流量事务场景,使用外键可能容易造成死锁,以及数据库资源更快出现瓶颈,所以一般互联网行业不建议使用,
多使用再企业内部,比如ERP软件,早期的MIS系统等。
(5)编码实战
(6)拓展思考
(7)参考文献
【参考一】https://blog.csdn.net/u010858605/article/details/70145733
【参考二】https://blog.csdn.net/lu1024188315/article/details/78758943
(8)更多讨论
Q1:提问人:如何使用mybatis进行批量查询?
A1:回答人(可以是分享人,也可以是其他学员):回答
批量查询:
<updateid="updateBatch"parameterType="list">
update course<trim prefix="set" suffixOverrides=","><trim prefix="name=case" suffix="end,"><foreach collection="list" item="item" index="index"><if test="item.name!=null">when id=#{item.id} then #{item.name}</if></foreach></trim><trim prefix="title =case" suffix="end,"><foreach collection="list" item="item" index="index"><if test="item.title!=null">when id=#{item.id} then #{item.title}</if></foreach></trim></trim>where<foreach collection="list" separator="or" item="item" index="index">id=#{item.id}</foreach>
</update>
这一句相当于
Q2:提问人:那怎么进行批量插入呢?
A2:回答人(可以是分享人,也可以是其他学员):回答
<insert id="addTrainRecordBatch" useGeneratedKeys="true" parameterType="java.util.List">
<selectKey resultType="long" keyProperty="id" order="AFTER">
SELECT
LAST_INSERT_ID()
</selectKey>
insert into t_train_record (add_time,emp_id,activity_id,flag)
values
<foreach collection="list" item="item" index="index" separator="," >
(#{item.addTime},#{item.empId},#{item.activityId},#{item.flag})
</foreach>
</insert>
Q3:提问人:那还有另外一种,多对一是怎么回事呢?
A3:回答人(可以是分享人,也可以是其他学员):回答
多对一跟一对一mybatis的配置文件其实并没有什么区别,只不过以哪张作为主表,在字段上有点区别?
(9)鸣谢
(10)结束语
PPT链接 视频链接
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
------------------------------------------------------------------------------------------------------------
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。
技能树.IT修真院
mybatis多表联查相关推荐
- Mybatis多表联查简简单单
Mybatis多表联查 1.一对一关系`association` 2.一对多关系`collection` 3.多对多关系 Mybatis中实现了对数据库中的数据进行封装,那么进行多表查询时就会遇到查询 ...
- 【mybatis】mybatis多表联查,存在一对多关系的,实体中使用List作为字段接收查询结果的写法...
实体如下: IntegralGoods 积分商品 IntegralGoodsImg 积分商品图片 ShelfLog 积分商品自动上架记录 IntegralGoods :IntegralGoodsIm ...
- 数据库多表查询 myBatis四表联查
查询目标 user表 role表 角色和菜单的关系 menu表 funs表(功能) 表和表的关系 1.user对role 是多对一role对user是一对多即一个user对应一个role 一个role ...
- jpi多表联查_使用mybatis进行多表联查
一.使用mybatis的基本步骤 1.导入jar包 2.配置文件 3.使用配置文件完成操作 二.实战演习 需求:教师表里有教师id和教师姓名 学生表里有学生id,姓名,年龄,教师id 一个教师有多个学 ...
- 使用mybatis进行四表联查
文章目录 一.问题背景 二.实际问题 三.问题解决 四.sql语句与XML映射文件 五.测试 一.问题背景 先数据库有用户表user.角色表role.菜单表menu.功能表funs和角色菜单关系表ro ...
- MyBatis Plus多表联查方法
MyBatis Plus是一款针对MyBatis框架的增强工具, 它提供了很多方便的方法来实现多表联查. 你可以使用MyBatis Plus的selectPage方法来实现多表联查, 该方法接收一个Q ...
- MyBatis如何实现多表联查
目录 一.什么是级联 二.实现多表联查的方式 方式一:通过xml配置文件 1.一对一级联步骤 2.一对多联步骤 方式二:使用映射器注解方式 1.一对一映射 2.一对多映射 三.级联的缺陷 一.什么是级 ...
- 6.2 、MyBatis 高级映射(resultMap 标签多表联查 , 一对多,多对一关系)
文章目录 一.创建表结构,添加数据,实现表中数据的关联关系 二. association 标签:用于一对一.多对一场景使用 1.实现一对一,多对一关系结果集映射 1.1 按照查询嵌套处理 1.2 按照 ...
- 零 XML 多表联查
mul-table-query 本文项目链接:超级好用的多数据源,多表联查工具, 专注 java 原生语法,零硬编码,零 xml 基于 mybatis-plus的多数据源配置,多表联查工具 效果:不改 ...
最新文章
- SAP PM 初级系列8 - PM 组织架构
- QML自定义IP地址输入框
- 基于单片机的简单的任务调度器
- [图像处理] Python+OpenCV实现车牌区域识别及Sobel算子
- mysql 开发基础系列22 SQL Model(带迁移事项)
- scala-数组操作
- Xamarin.Android开发实践(一)
- Kotlin入门(4)声明与操作数组
- 【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
- android开发_SimpleAdapter适配器
- 多目标数据关联基本方法
- Linux led_class子系统
- Linux Capability探索试验
- Pigeon中的Netty应用
- 西行漫记(6):Diversity
- Hadoop:大数据的特征4V
- Mysql cpu 占用率非常高 300%
- 智能货架是零售业的必经之路,普通人入局新零售有机会
- 网维服务器加硬盘,网维大师官网-帮助
- LeetCode之面试题01.02判定是否互为字符重排