Spring Data JPA 如何使用QueryDsl查询并分页

网友投稿 354 2022-09-14


Spring Data JPA 如何使用QueryDsl查询并分页

目录Spring Data JPA 使用QueryDsl查询并分页使用QueryDSL

Spring Data JPA 使用QueryDsl查询并分页

QProblemPoint qProblemPoint = QProblemPoint.problemPoint;

Map map = getWhere(param);

JPAQuery query = jpaQueryFactory

.selectFrom(qProblemPoint)

.where(

qProbllyBeUsSemPoint.problemClassify.like(map.get("problemClassify")),//问题分类

qProblemPoint.problemLevel.like(map.get("problemLevel")),//问题级别

qProblemPoint.securityRiskEvent.like(map.get("securityRiskEvent")),//风险事件

qProblemPoint.riskItems.like(map.get("riskItems"))//安全风险项

);

List list = query

.offset(param.getStart())

.limit(param.getLength()).fetch();

long count = query.fetchCount();

QProblemPoint:是编译出来的实体

query :根据条件查询出来的集合

list:根据前台传来的进行分页操作

.fetch():相当于.get() 可看出返回类型。

使用QueryDSL

补充springDataJpa进行复杂动态sql语句进行sql查询 实现 关联 分页等功能

@Test

public void testComplexSelect() {

QQyOnlineCall onlineCall = QQyOnlineCall.qyOnlineCall;

QClientList clientList = QClientList.clientList;

// page必须从1开始

PageRequest request = PageRequest.of(0, 10);

// 构建复杂查询语句

List result = mFactory.select(onlineCall.id, onlineCall.cUsesign, onlineCall.cYgscode, clientList.cClientname, clientList.cPhone1)

.from(onlineCall)

.leftJoin(clientList)

.on(onlineCall.cClientid.eq(clientList.id))

.where(onlineCall.cCom.eq("C0003"))

.limit(request.getPageSize()) // 单页查询数量

.offset(request.getPageSize() * request.getPageNumber()) // 偏移量

.fetch();

// 获取结果

for (Tuple tuple : result) {

HashMap map = new HashMap<>();

map.put("id", tuple.get(onlineCall.id));

map.put("useSign", tuple.get(onlineCall.cUsesign));

map.put("ygsCodehttp://", tuple.get(onlineCall.cYgscode));

map.put("clientName", tuple.get(clientList.cClientname));

map.put("phone", tuple.get(clientList.cPhone1));

System.out.println(jsonUtils.toJson(map));

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:软考网络管理员-考试练习题及答案(6)
下一篇:软考网络管理员-考试练习题及答案(4)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~