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);