jpa Specification使用

来源:互联网 发布:php程序员的工作常态 编辑:程序博客网 时间:2024/06/02 04:37

spring jpa Specification 使用

本文只是做个笔记,备忘

 public Page<Message> list(BootPage bootPage,MessageQuery messageQuery){        Pageable pageable = new PageRequest(bootPage.getOffset() / bootPage.getLimit(), bootPage.getLimit(),bootPage.getOrder());        Specification<Message> spec1 = (root, query, cb) -> {            Path<Long> tPath = root.get("target");            /*Target is ALL*/            cb.equal(tPath, Message.Target.ALL);            return null;        };        Specification<Message> spec2 = (root, query, cb) -> {            Path<Long> tPath = root.get("target");            Path<String> vPath = root.get("value");            /*or , Target is SCHOOL and value like ou */            cb.equal(tPath, Message.Target.SCHOOL);            cb.like(vPath, "%"+messageQuery.getOu().trim()+"%");            return null;        };        Specification<Message> spec3 = (root, query, cb) -> {            Path<Long> tPath = root.get("target");            Path<String> vPath = root.get("value");            /*Target is PERSONAL and value like uid*/            cb.equal(tPath,Message.Target.PERSONAL);            cb.like(vPath,"%"+messageQuery.getUid()+"%");            return null;        };        Specification spec = Specifications.where(spec1).or(spec2).or(spec3);        return repository.findAll(spec,pageable);    }
原创粉丝点击