JPA Specification常用查询+排序实例


JPA Specification常用查询+排序实例

https://www.jb51.net/article/229599.htm#_label1

目录
  • JPA Specification常用查询+排序
    • 1.第一步:继承父类
    • 2.第二步
  • JPA Specification复杂查询+排序
    • 需求
    • 开始了
      • 1.dao
      • 2.service
      • 3.排序
    • 前端
      • 结束语

      ?

      1public interface TblCarton2RCardLogRepository extends JpaRepository,JpaSpecificationExecutor {
      ?
      1234567891011121314151617tblCarton2RCardLogRepository.findAll(new Specification() {    @Override    public  Predicate toPredicate(Root root, CriteriaQuery<?> query,CriteriaBuilder cb) {        List list = new ArrayList();        list.add(cb.equal(root.get("cartonNo").as(String.class), cartonNo));//某普通字段        list.add(cb.equal(root.get("id").get("rCard").as(String.class), rCard));//主键中某字段        list.add(cb.like(root.get("mocode").as(String.class), "%" + mocode + "%"));//like        list.add(cb.between(root.get("frozenDate").as(Long.class), frozenDateStart, frozenDateEnd));//between and        list.add(cb.greaterThanOrEqualTo(root.get("id").get("rcard").as(String.class), rCardStart));//大于等于        list.add(root.get("id").get("lotNo").as(String.class).in(lotNos));//in        //ORDER BY packdate DESC,packtime DESC        Predicate[] p = new Predicate[list.size()];        query.where(cb.and(list.toArray(p)));        query.orderBy(cb.desc(root.get("packDate")),cb.desc(root.get("packTime")));        return query.getRestriction();    }});
      ?
      123456789@Datapublic class DeptSort {private String id;//编码private String name;//名称private String highDeptName;//上级部门private String principal;//负责人private String deptType;//部门类型private String enable;//启用}
      ?
      1234567891011121314151617181920212223242526272829303132333435363738public ResponseModel table(@RequestParam("search")String search,@RequestParam("pageNumber")Integer pageNumber,@RequestParam("pageSize")Integer pageSize,@RequestBody DeptSort deptSort){ResponseModel model = null;try {List orders = new ArrayList();if (StringUtils.isNotBlank(deptSort.getId())){orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getId()),"id"));}if (StringUtils.isNotBlank(deptSort.getName())){orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getName()),"name"));}if (StringUtils.isNotBlank(deptSort.getHighDeptName())){orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getHighDeptName()),"highDeptName"));}if (StringUtils.isNotBlank(deptSort.getPrincipal())){orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getPrincipal()),"principal"));}if (StringUtils.isNotBlank(deptSort.getDeptType())){orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getDeptType()),"deptType"));}if (StringUtils.isNotBlank(deptSort.getEnable())){orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getEnable()),"enable"));}//orders不能为空,所以如果为空设置按id排序[/code][code] if (orders.size() == 0){orders.add(new Sort.Order(Sort.Direction.ASC,"id"));}Sort sort = new Sort(orders);Pageable pageable = new PageRequest(pageNumber,pageSize,sort);Page all = service.findAll(search, pageable);model = ResponseModel.getSuccessResponseModel().setData(all);}catch (Exception e){e.printStackTrace();model = ResponseModel.getFailedResponseModel();}return model;}
      ?
      1List orders = new ArrayList();
      ?
      1orders.add(new Sort.Order(Sort.Direction.fromString(deptSort.getEnable()),"enable"))
      ?
      1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253Hibernate: /* selectcount(generatedAlias0) fromBusinessdept as generatedAlias0 where(generatedAlias0.name like :param0 ) and (generatedAlias0.deleteIs=1 ) */ selectcount(businessde0_.id) as col_0_0_ fromt_department businessde0_ where(businessde0_.name like ?) and businessde0_.delete_is=1Hibernate: /* selectgeneratedAlias0 fromBusinessdept as generatedAlias0 where(generatedAlias0.name like :param0 ) and (generatedAlias0.deleteIs=1 ) order bygeneratedAlias0.deptType asc,generatedAlias0.enable desc */ selectbusinessde0_.id as id1_3_,businessde0_.delete_is as delete_i2_3_,businessde0_.dept_type as dept_typ3_3_,businessde0_.enable as enable4_3_,businessde0_.high_dept_id as high_dep5_3_,businessde0_.high_dept_name as high_dep6_3_,businessde0_.name as name7_3_,businessde0_.principal as principa8_3_ fromt_department businessde0_ where(businessde0_.name like ?) and businessde0_.delete_is=1 order bybusinessde0_.dept_type asc,businessde0_.enable desc limit ?

      可以看到条件查询,升序、降序都有。

      结束语

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

                              
      
                          

      相关