Springboot jpa使用中遇到的问题和使用的经验

Springboot jpa使用中遇到很多问题,平常都是测试完了就继续了,今天发现问题实在是太多了,测试用例写的有点多,找起来太不方便,时间问题,在这里先记录一点,等有时间慢慢更新。欢迎大家指正,觉得有用随意转载,要是能标明来源就更好了。

1、deleteByParamsIn(List<T> paramsList)

根据某一字段批量删除时,若使用jpa生成的方法,则通过控制台打印sql发现,执行过程是这样的:执行查询==》若存在匹配记录,逐条记录删除,条件为唯一标识。

select * from table where param in (?,?,?)
delete from talbe where id=?
delete from talbe where id=?

此处查询语句与hibernate生成的sql语句不一致,只是为说明。delete语句的数量与匹配到的记录数量一致。

简化方式:

@Modifying
@Query("delete from table t where t.param in (?1)")
int deleteByParamIn(List<String> params);

这种方式生成的sql只有一条:delete from table where param in (? , ? , ?)

注:这里其实若对性能没啥要求的话,应该不需要太过在意,只是偶尔强迫症犯了,总是想着简化下,^_^。

2、findByParamLike(String param)

模糊查询时,jpa这里有个坑,经过测试发现,jpa生成sql的时候是直接把参数放入sql的,并没有在前后附加%%,造成查询结果不对,所以只能在传递参数的时候,对参数进行一下处理

String param = "%"+param+"%";
repository.findByParamLike(param);

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值