Dra-M Dra-M
首页
技术
冥思
哲学
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

莫小龙

保持理智,相信未来。
首页
技术
冥思
哲学
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java

    • JUC

    • Spring

      • 彻底透析SpringBoot jar可执行原理
      • 使用Hibernate-validator的Notnull等注解校验参数并使用全局异常处理
      • 简陋的注解扫描实现
      • SpringBoot+Swagger,快速构建REST API文档
      • Spring&kotlin 异常 NoClassDefFoundError
      • PageHelper不生效问题
      • SpringDataJpa一些注意事项
      • SpringDataJpa的动态条件查询和分页查询
      • Gradle

      • 面向对象

      • Stream流式编程思想及常用API介绍
      • JAVA快速导出Excel
    • Golang

    • 编程思想

    • 微服务

    • 中间件

    • Python

    • 运维

    • 技术
    • Java
    • Spring
    莫小龙
    2020-12-15
    目录

    SpringDataJpa的动态条件查询和分页查询

    在Repository继承了JpaSpecificationExecutor<T>后可以直接使用findAll做分页查询和条件查询。

    Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable);
    
    1

    # 拼接查询条件

      /**
       * 拼接查询 
       */
      private Specification<T> getSellerBillSpecification(String param1, String param2) {
        //条件
        return (Specification<T>) (root, query, criteriaBuilder) -> {
          //为了动态拼接 使用一个集合存储条件
          List<Predicate> predicateList = new ArrayList<>();
          //范围查询
          if (param1 != null && param2 !=null) {
            predicateList.add(criteriaBuilder.between(root.get("field1"), param1,param2));
          }
          //模糊查询
          if (param1 !=null) {
            predicateList.add(criteriaBuilder.like(root.get("field2"), param1));
          }
          //精确查询
          if (StringUtils.isNotEmpty(1)) {
            predicateList.add(criteriaBuilder.equal(root.get("field3"), param2));
          }
          return criteriaBuilder.and(predicateList.toArray(new Predicate[0]));
        };
      }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    # 拼接分页条件

        //页码
        Integer page = 1;
        //每页数量
        Integer size = 20;
        //page从0开始,所以-1
        PageRequest pageRequest = PageRequest.of(page - 1, size, Sort.by(Sort.Order.asc("createTime")));
    
    1
    2
    3
    4
    5
    6

    # 响应

    详见 org.springframework.data.domain.Page


    #SpringDataJpa
    上次更新: 10/23/2024
    SpringDataJpa一些注意事项
    在Gradle中使用jib自动打包

    ← SpringDataJpa一些注意事项 在Gradle中使用jib自动打包→

    最近更新
    01
    mosquito配置ws协议
    10-23
    02
    Pip包的离线下载和安装
    10-23
    03
    stable diffusion 相关收藏
    02-24
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Dra-M
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式