首页 > 其他 > 详细

JPA动态查询

时间:2021-03-13 12:03:10      阅读:25      评论:0      收藏:0      [点我收藏+]

 

 

动态查询可参考:

https://blog.csdn.net/liuyunyihao/article/details/81194007

 

注意点:

 

CriterialBulider cb 构造条件,最后返回条件的and拼接,即这些条件都是and关系,predictcate是一个数组。

return cb.and(predicates.toArray(new Predicate[predicates.size()]));

如果是or的连接关系,单独再构造一个predictcate集合,这个集合里的条件是or的关系;

最后再将这个or集合和and集合,再次and起来即可。

 

 

条件参数的类型,要与实体entity完全一致。

            public Predicate toPredicate(Root<BrandEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                // TODO Auto-generated method stub
                ArrayList<Predicate> predicates = Lists.newArrayList();
                if(StringUtils.isNotBlank(model.getKey())) {
                    Predicate predicate = cb.like(root.get("name"), "%" + model.getKey() + "%");
                    predicates.add(predicate);
                    
                }
                if(model.getKey().length()==1) {
                    Predicate predicate = cb.equal(root.<Character>get("letter"), model.getKey().toUpperCase().charAt(0));  
                    predicates.add(predicate);
                }
                
                return cb.or(predicates.toArray(new Predicate[predicates.size()]));//这里面两个predicate是or关系
            }

Predicate predicate = cb.equal(root.<Character>get("letter"), model.getKey().toUpperCase().charAt(0));

类型要一致,表里面是char类型,不是varchar

Character是包装类型

 

分页和排序。

//         Sort sort = new Sort(Sort.Direction.DESC,"createTime");
//         Pageable pageable =new PageRequest(pageNum - 1, pageLimit, sort);   过时

Sort sort = Sort.by(model.getSortBy()).ascending(); 可以拼接多个排序对象
PageRequest pageAndSort = PageRequest.of( Integer.valueOf(model.getPage()), Integer.valueOf(model.getRows()), sort);

 

JPA动态查询

原文:https://www.cnblogs.com/wenhui2015/p/14527977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!