美文网首页
SpringBootJpa的高级条件查询动态查询

SpringBootJpa的高级条件查询动态查询

作者: Binary_r | 来源:发表于2020-05-28 22:02 被阅读0次

1、Specifications动态查询

  • JpaSpecificationExecutor 方法列表

      T findOne(Specification<T> spec);  //查询单个对象
    
      List<T> findAll(Specification<T> spec);  //查询列表
    
      //查询全部,分页
      //pageable:分页参数
      //返回值:分页pageBean(page:是springdatajpa提供的)
      Page<T> findAll(Specification<T> spec, Pageable pageable);
    
      //查询列表
      //Sort:排序参数
      List<T> findAll(Specification<T> spec, Sort sort);
    
      long count(Specification<T> spec);//统计查询
    
  • Specification :查询条件
    自定义我们自己的Specification实现类
    实现
    //root:查询的根对象(查询的任何属性都可以从根对象中获取)
    //CriteriaQuery:顶层查询对象,自定义查询方式(了解:一般不用)
    //CriteriaBuilder:查询的构造器,封装了很多的查询条件
    Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb); //封装查询条件

public PageResult<Post> findByClassify(Integer classifyId, Integer matterId, Integer page, Integer rows) {
        //自定义查询条件
        Specification<Post> spec = new Specification<Post>() {
            @Override
            public Predicate toPredicate(Root<Post> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
                List<Predicate> list = new ArrayList<>();
                //根据属性名获取查询对象的属性
                //Path<Reply> path = root.get("nameId");
                //相当于 where receiverName = "Veggie", CriteriaBuilder接口中还有很多查询条件,建议看源码
                //Predicate equal = criteriaBuilder.equal(path, userId);
                list.add(criteriaBuilder.equal(root.get("classifyId"), classifyId));
                list.add(criteriaBuilder.equal(root.get("matterId"), matterId));
                return criteriaBuilder.and(list.toArray(new Predicate[list.size()]));
            }
        };
        Page<Post> postPage = postRepository.findAll(spec, PageRequest.of(page, rows));
        return new PageResult<>(postPage.getTotalElements(), postPage.getTotalPages(), postPage.getContent());
    }

相关文章

  • SpringBootJpa的高级条件查询动态查询

    1、Specifications动态查询 JpaSpecificationExecutor 方法列表 T fin...

  • 单表的 CURD 操作(第四讲)

    动态 SQL 动态 SQL ,主要用于解决查询条件不确定的情况:在程序运行期间,根据用户提交的查询条件进行查询。提...

  • springBootJpa多表查询

    1、多表之间的关系和操作多表的操作步骤 表关系一对一一对多:一的一方:主表多的一方:从表外键:需要再从表上新建一列...

  • mongdb 高级查询

    mongdb 高级查询 条件查询 (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $g...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • Spring Data JPA中分别使用Specificatio

    1、Specifications进行查询 在一些查询条件不固定的场景下,我们需要动态去组装查询条件。在Spring...

  • Spring Data JPA

    Spring Data JPA,一种动态条件查询的写法 我们在使用SpringData JPA框架时,进行条件查询...

  • SpringDataJpa复杂查询-动态查询条件

    Jpa的Dao层只继承Repository做复杂查询,不能做到不传某不一个条件,where子句根据条件是否为空动态...

  • Spring Data JPA知识 day05

    一、Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构...

  • JPA(三)Specifications查询

    一 Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相...

网友评论

      本文标题:SpringBootJpa的高级条件查询动态查询

      本文链接:https://www.haomeiwen.com/subject/cbpzahtx.html