使用QueryDSL集成查询
QueryDSL是什么?
- QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。
- Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。
- 借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前QueryDSL支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search
下面我们通过一个查询订单的实例来简单集成QueryDSL
首先引入QueryDSL对JPA的支持
implementation 'com.querydsl:querydsl-jpa:4.2.1'
//使用kapt激活querydsl apt工具
kapt "com.querydsl:querydsl-apt:4.2.1:jpa"
执行build会发现生成
build\generated\source\kapt\main\com\example\demo2\entity\QOrderEntity.java
这个类是我们查询的条件,可以进行如下查询,当然条件是可以拼装的
val page = if (pageIndex <= 1) 1 else pageIndex
val qOrderMasterEntity = QOrderEntity.orderEntity
var predicate = qOrderEntity.isNotNull
predicate =predicate.and( qOrderEntity.orderStatus.eq(11))
predicate = predicate.and(qOrderEntity.currencyCode.eq("HKD"))
orderRepository.findAll(predicate, PageRequest.of(page, 10))
来源:oschina
链接:https://my.oschina.net/u/1865350/blog/2396217