概述
Spring Data JPA 使用QueryDsl查询并分页
QProblemPoint qProblemPoint = QProblemPoint.problemPoint; Map<String,String> map = getWhere(param); JPAQuery<ProblemPoint> query = jpaQueryFactory .selectFrom(qProblemPoint) .where( qProblemPoint.problemClassify.like(map.get("problemClassify")),//问题分类 qProblemPoint.problemLevel.like(map.get("problemLevel")),//问题级别 qProblemPoint.securityRiskEvent.like(map.get("securityRiskEvent")),//风险事件 qProblemPoint.riskItems.like(map.get("riskItems"))//安全风险项 ); List<ProblemPoint> 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<Tuple> 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<String, Object> map = new HashMap<>(); map.put("id", tuple.get(onlineCall.id)); map.put("useSign", tuple.get(onlineCall.cUsesign)); map.put("ygsCode", tuple.get(onlineCall.cYgscode)); map.put("clientName", tuple.get(clientList.cClientname)); map.put("phone", tuple.get(clientList.cPhone1)); System.out.println(JsonUtils.toJson(map)); } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持靠谱客。
最后
以上就是大胆板凳为你收集整理的Spring Data JPA 如何使用QueryDsl查询并分页的全部内容,希望文章能够帮你解决Spring Data JPA 如何使用QueryDsl查询并分页所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复