jpa实现根据条件删除_Spring Data JPA批量条件操作(where in)

总结一篇批量操作吧,

在数据库操作中,大家免不了会有批量查询,批量更新/删除的操作,那么在JPA中,有几种方式操作呢?

第一种,当然是JPA的原生操作

ListfindAllById(Iterable ids); 批量id查询

void deleteInBatch(Iterable entities); 批量删除

大家只需传入对应的Iterable数据即可,但是这两种方法参数不够灵活,比如deleteInBatch,使用时需要把整个entityList传进去,如果我们只有id的话,这个方法使用起来就有点鸡肋,这时候就可以使用第二种方法了

第二种,JPA表达式

即按照JPA语法实现自定义操作,当然也包括in类型的操作,例如

相对第一种还是非常灵活的,只要按照JPA表达式的规范语法写,还是非常好用的。但是这种方式有一点不好是,条件如果过多的时候,方法名就会非常长,这时候我们编写sql就派上用场了。

第三种,JPQL方式

所谓JPQL就是在方法名上加个注解@Query,在注解里就可以自己写sql了。下面举个栗子

如果只是查询的话,就只需要加@Query一个注解,然后@Query第一个参数value写上自己的sql,参数按需传,sql中的占位下标是参数顺序(从1开始),第二个参数nativeQuery值设为true即可。一个查询的JPQL就写完了。

如果你要增/删/改的话,还需要添加其他两个注解,即@Transactional,@Modifying,这两个注解不加会报错的。

言归正传,JPQL中使用 in 查询,注意 sql 中的 in 后面不需要加括号了,直接写占位符即可,然后参数就传个List数组就好啦,快动手测试一下吧,有问题留言一起讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值