Jpa实现多条件分页查询(告别组装sql)

  1. 不需要自己拼写组装sql
  2. 引用pom
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
</dependency>

3.建实体类,maven 编译代后生产QOrderEntity,QOrderEntity is a Querydsl query type for OrderEntity

@Data
@DynamicInsert
@DynamicUpdate
@Entity
@Table(name = "t_order")
public class OrderEntity {

  /**
   * 主键
   */
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id")
  private Long id;
  /**
   * 平台订单号
   */
  @Column(name = "order_id")
  private String orderId;
  /**
   * 用户id
   */
  @Column(name = "user_id")
  private String userId;

}

4.具体demo示例

//加sql条件
List<BooleanExpression> predicates = new ArrayList<>();
if (StringUtils.isNotBlank(userId)) {
    predicates.add(QOrderEntity.orderEntity.userId.eq(userId));
}
if (StringUtils.isNotBlank(orderId)) {
    predicates.add(QOrderEntity.orderEntity.orderId.eq(orderId));
}

//加sql排序
List<Sort.Order> sorts = new ArrayList<>();
sorts.add(new Sort.Order(Sort.Direction.DESC, "createTime"));
Sort sort = new Sort(sorts);
//加sql分页
Pageable pageable = new PageRequest(pageNum - 1, pageSize, sort);
Page<OrderEntity> tbOtaDeviceResults = orderDao.findAll(ExpressionUtils.allOf(predicates.toArray(new Predicate[]{})), pageable);

POM依赖

          <plugin>
              <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/generated-sources/java</outputDirectory>
                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容