使用QueryDSL集成分页
首先创建一个queryFactory
@Configuration
class MyConfiguration {
@Bean
fun queryFactory(entityManager : EntityManager): JPAQueryFactory{
return JPAQueryFactory(entityManager)
}
}
创建orderService,使用orderListPage分页
@Autowired
private lateinit var queryFactory: JPAQueryFactory
fun orderListPage(pageable: Pageable):Page<OrderEntity>{
val qOrderEntity = QOrderEntity.orderEntity
val fetchResults = queryFactory.selectFrom(qOrderEntity)
.offset(pageable.offset)
.limit(pageable.pageSize.toLong())
.fetchResults()
//转换为通用Page对象
return PageImpl<OrderEntity>(fetchResults.results,pageable,fetchResults.total)
}
和上节一样调用就好了,省去了和Repository配合,其简洁性让人兴奋
@Autowired
private lateinit var orderService: OrderService
orderService.orderListPage(PageRequest.of(page, 10))