Mybatis单表 | 多表 | 动态sql 查询

一:单表增删改查xml

注:update不建议这么写sql,文章后有动态sql的写法,用到了trim代替了set,注意ifnull的情况

在这里插入图片描述
单表的sql映射,没什么好说的

二:多表的连接查询

引言:在多表之间如果存在外键关联需要建立DTO类来继承entity包下的实体类,下面是 小区:楼栋(1:n) 的demo,另外多表连接映射的时候需要将resultType改为resultMap
一个小区存在多个楼栋,所以属性有个List ldList;
一个楼栋只能属于一个小区,所以属性有Xq xq;

在这里插入图片描述

在这里插入图片描述

多表间嵌套查询xml(1:n)

sql要求:根据指定小区id找到小区+楼栋的全部信息,注(小区 : 楼栋 = 1:n) 用到了collection来存储楼栋详细信息List<Ld> ldList

在这里插入图片描述
在这里插入图片描述
这里就不提供等值连接查询了,不好用

多表间嵌套查询xml(n:1)

sql要求:根据具体楼栋id找到这个小区+楼栋的所有信息,注:(楼栋 : 小区 = n : 1)用到了association关联,

在这里插入图片描述

三:动态sql语句

引言:在我们学会了单表的增删改查后,单次增删已经无法满足我们了,想要直接通过一个方法对多个数据操作,就比如说你想删除一些id的数据,映射文件就对你传的idList(int[] 或Intger[] 都可以实现,但需要用collection控制别名)操作就可以了
解释:
foreach : 遍历list
item : list中的每个元素
open : 字符串连接的前缀
separator : 删除字符串中的字符 例如","
close:字符串连接的后缀

查找id在idList中的数据

> sql:select id,name from dept where id in(?,?,?..) 在这里插入图片描述
这里需要传一个idList所以Mapper接口中的方法这么写:
List<Dept> selectByIds(List idList);

批量add数据

sql:insert into dept(name,location) values(?,?),(?,?),(?,?)
在这里插入图片描述

批量delete数据

sql:delete from dept where id in (?,?,…) 在这里插入图片描述

update()的xml映射

解释:trim代替set可以防止在update的时候把已存在的信息给赋null了,这里用trim判断是否设置了更新的值才更新
prefix:前缀 suffixOverrides:删除后缀“,”,通常连用
test:实体类中的属性名
在这里插入图片描述

今天刚学完Mybatis,发个文章记录一下吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值