源码地址:https://gitee.com/yk001/base.git
1,导入包
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.4.0</version>
</dependency>
如果包下载不下来,切换一下项目的repositories
<repositories>
<!-- <repository>-->
<!-- <id>nexus-aliyun</id>-->
<!-- <name>Nexus aliyun</name>-->
<!-- <url>https://maven.aliyun.com/nexus/repository/public</url>-->
<!-- </repository>-->
<repository>
<id>nexus-aliyun-google</id>
<name>Nexus aliyun google</name>
<url>https://maven.aliyun.com/repository/google</url>
</repository>
</repositories>
2,导入插件
<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>
3,新增配置类
package com.yukang.base.config;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
/**
* Date: 2020/11/28 2:23 下午<br/>
*
* @author yukang
*/
@Configuration
public class DslJpaConfig {
@Bean
public JPAQueryFactory jpaQueryFactory(EntityManager entityManager){
return new JPAQueryFactory(entityManager);
}
}
4,*Repository接口继承QuerydslPredicateExecutor
public interface BaseEntityRepo extends JpaRepository<BaseEntity,Long>, QuerydslPredicateExecutor<BaseEntity> {
}
5,查询逻辑
@GetMapping("/baseentity")
public Page<BaseEntity> getBaseEntitys(
@RequestParam(name="createdTime",required = false) Timestamp createdTime,
@RequestParam(name="page",defaultValue = "0") Integer page,
@RequestParam(name="size",defaultValue = "10") Integer size) {
QBaseEntity qBaseEntity = QBaseEntity.baseEntity;
BooleanBuilder booleanBuilder = new BooleanBuilder(qBaseEntity.id.isNotNull());
if(createdTime != null){
booleanBuilder.and(qBaseEntity.createdTime.goe(createdTime));
}
//分页排序
Sort sort = Sort.by(Sort.Direction.ASC,"id");
PageRequest pageRequest = PageRequest.of(page,size,sort);
return baseEntityRepo.findAll(booleanBuilder.getValue(),pageRequest);
}
6,验证
page 从0开始
curl -X GET "http://localhost:9001/baseentity?page=0&size=2" -H "accept: */*"
{
"content": [
{
"id": 1,
"name": "string",
"remark": {
"additionalProp1": {},
"additionalProp3": {},
"additionalProp2": {}
},
"createdTime": "2020-11-29 14:34:59"
},
{
"id": 2,
"name": "string",
"remark": {
"additionalProp1": {},
"additionalProp3": {},
"additionalProp2": {}
},
"createdTime": "2020-11-29 14:37:15"
}
],
"pageable": {
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"pageNumber": 0,
"pageSize": 2,
"offset": 0,
"paged": true,
"unpaged": false
},
"totalPages": 2,
"totalElements": 3,
"last": false,
"numberOfElements": 2,
"number": 0,
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"size": 2,
"first": true,
"empty": false
}