Spring Data JPA 条件查询 分页查询

条件查询

//Label : 实体类,传过来的参数
labelDao.findAll(new Specification<Label>(){
    @Override
    public Predicate toPredicate(Root<Label) root,CriteriaQuery<?> query,CriteriaBuilder cb){
        //new一个list集合,来存放所有的条件
        List<Predicate> list = new ArrayList<>();
        if(label.getname() != null && !"".equals(label.getname())){
            //条件若是模糊查询 
            Predicate predicate = cb.like(root.get("name").as(String.class),"%"+label.getname()+"%");//where name like "%小%"
            list.add(predicate);
        }
        if(){
            //若不是模糊查询 ,则把上面的%%去掉  
            list.add();
        }
        //new一个数组作为最终返回值的条件
        Predicate[] parr = new Predicate[list.size()];
        //把list直接转成数组
        parr = list.toArray(parr);
        return cb.add(parr);// where name like "%小%"  //多个条件下 and
    }  
});

分页查询

public Page<Label> pageQuery(Label label, int page,int size){
    //封装分页对象
    Pageable pageable = PageRequest.of(page-1,size);
    return labelDao.findAll(new Specification<Label>(){
        //root :根对象,也就是要把条件封装到哪个对象中, where 类名 = label.getid
        //quert : 封装的都是查询关键字,比如  group by ,order by 等
        //cb : 用来封装条件对象的,如果直接返回null,表示不需要任何条件
        @Override
        public Predicate toPredicate(Root<Label) root,CriteriaQuery<?> query,CriteriaBuilder cb){
            //new一个list集合,来存放所有的条件
            List<Predicate> list = new ArrayList<>();
            if(label.getname() != null && !"".equals(label.getname())){
                //条件若是模糊查询 
                Predicate predicate = cb.like(root.get("name").as(String.class),"%"+label.getname()+"%");//where name like "%小%"
                list.add(predicate);
            }
            if(){
                //若不是模糊查询 ,则把上面的%%去掉  
                list.add();
            }
            //new一个数组作为最终返回值的条件
            Predicate[] parr = new Predicate[list.size()];
            //把list直接转成数组
            parr = list.toArray(parr);
            return cb.add(parr);// where name like "%小%"  //多个条件下 and
        }  
    },pageable);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值