今天和别的系统联调,改了个需求,之前的复杂查询中关键字查询需要加入忽略大小写。
忽略大小写都是把要查的条件都转为大写或者小写,然后把数据库获得的数据同样转为大写或者小写再去比对。
Page<Student> page = studentRepository.findAll(new Specification<Student>(Root<Student> root,
CriteriaQuery<?> query, CriteriaBuilder cb){
List<Predicate> preList = new ArrayList<>();
if(StringUtils.isNotEmpty(keys)){
Predicate namePre = cb.like(cb.lower(rootget("studentName")),"%" + keys.toLowerCase() + "%");
preList.add(namePre);
}
Predicate[] predicates = preList.toArray(new Predicate[preList.size()]);
return cb.and(predicates);
});