Spring Data JPA 复杂/多条件组合分页查询
发布时间 - 2026-01-11 00:33:04 点击率:次话不多说,请看代码:
public Map<String, Object> getWeeklyBySearch(final Map<String, String> serArgs,
String pageNum, String pageSize) throws Exception {
// TODO Auto-generated method stub
Map<String,Object> resultMap=new HashMap<String, Object>();
// 判断分页条件
pageNum = TextUtils.isNotBlank(pageNum) ? pageNum : "1";
pageSize = TextUtils.isNotBlank(pageSize) ? pageSize : "10";
// 分页时的总页数、每页条数、排序方式、排序字段
Pageable StuPageable = PageUtils.buildPageRequest(Integer.valueOf(pageNum),Integer.valueOf(pageSize), new Sort(Direction.DESC, new String[] { "xmzbsj","lstProinfo.proId"}));
// 按照条件进行分页查询,根据StuPageable的分页方式
Page<Weekly> StuPage = proWeeklyDao.findAll(new Specification<Weekly>() {
public Predicate toPredicate(Root<Weekly> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> lstPredicates = new ArrayList<Predicate>();
if (TextUtils.isNotBlank(serArgs.get("xmmc"))) {
lstPredicates.add(cb.like(root.get("lstProinfo").get("xmmc").as(String.class), "%" + serArgs.get("xmmc") + "%"));
}
if (TextUtils.isNotBlank(serArgs.get("xmzbqssj"))) {
lstPredicates.add(cb.greaterThanOrEqualTo(root.get("xmzbsj").as(String.class),serArgs.get("xmzbqssj")));
}
if (TextUtils.isNotBlank(serArgs.get("xmzbjzsj"))) {
lstPredicates.add(cb.lessThanOrEqualTo(root.get("xmzbsj").as(String.class),serArgs.get("xmzbjzsj")));
}
Predicate[] arrayPredicates = new Predicate[lstPredicates.size()];
return cb.and(lstPredicates.toArray(arrayPredicates));
}
}, StuPageable);
// 按照条件进行分页查询
resultMap = PageUtils.getPageMap(StuPage);
return resultMap;
}
buildPageRequest()方法,导入的包,下面是自己写的方法
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
* @param pageNum 当前页
* @param pageSize 每页条数
* @param sortType 排序字段
* @param direction 排序方向
*/
public static PageRequest buildPageRequest(int pageNum, int pageSize, String sortType, String direction) {
Sort sort = null;
if (!TextUtils.isNotBlank(sortType)) {
return new PageRequest(pageNum - 1, pageSize);
} else if (TextUtils.isNotBlank(direction)) {
if (Direction.ASC.equals(direction)) {
sort = new Sort(Direction.ASC, sortType);
} else {
sort = new Sort(Direction.DESC, sortType);
}
return new PageRequest(pageNum - 1, pageSize, sort);
} else {
sort = new Sort(Direction.ASC, sortType);
return new PageRequest(pageNum - 1, pageSize, sort);
}
}
public static PageRequest buildPageRequest(int pageNum, int pageSize, String sortType) {
return buildPageRequest(pageNum, pageSize, sortType, null);
}
getPageMap()方法:
JPA的Page也是集合,获取Page集合里的值,最后获取到的这些(key,value)
/**
* 封装分页数据到Map中。
*/
public static Map<String, Object> getPageMap(Page<?> objPage) {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put(Constants.PAGE_RESULT_LIST, objPage.getContent()); // 数据集合,符合查询条件的所有记录数据
resultMap.put(Constants.PAGE_TOTAL_NUM, objPage.getTotalElements()); // 总记录数
resultMap.put(Constants.PAGE_TOTAL_PAGE, objPage.getTotalPages()); // 总页数
resultMap.put(Constants.PAGE_NUM, objPage.getNumber()); // 当前页码
resultMap.put(Constants.PAGE_SIZE, objPage.getSize()); // 每页显示数量
return resultMap;
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# spring
# data
# jpa
# 分页
# 分页查询
# 复杂查询
# JPA多条件复杂SQL动态分页查询功能
# SpringJPA 做分页条件查询的代码实践
# Spring Data JPA结合Mybatis进行分页查询的实现
# JPA框架实现分页查询和条件查询功能详解
# SpringBoot集成Jpa对数据进行排序、分页、条件查询和过滤操作
# JPA实现多条件分页查询
# 每页
# 条数
# 多说
# 当前页
# StuPageable
# Pageable
# PageUtils
# buildPageRequest
# TextUtils
# valueOf
# isNotBlank
# Integer
# Weekly
# Page
# proId
# findAll
# proWeeklyDao
# StuPage
# Direction
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
长沙企业网站制作哪家好,长沙水业集团官方网站?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel怎么使用Intervention Image库处理图片上传和缩放
如何在VPS电脑上快速搭建网站?
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
如何用景安虚拟主机手机版绑定域名建站?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Firefox Developer Edition开发者版本入口
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何快速登录WAP自助建站平台?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
浅述节点的创建及常见功能的实现
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
如何快速搭建FTP站点实现文件共享?
JS弹性运动实现方法分析
Laravel怎么上传文件_Laravel图片上传及存储配置
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
晋江文学城电脑版官网 晋江文学城网页版直接进入
如何快速使用云服务器搭建个人网站?
如何为不同团队 ID 动态生成多个独立按钮
Laravel如何使用.env文件管理环境变量?(最佳实践)
微信小程序 canvas开发实例及注意事项
Laravel定时任务怎么设置_Laravel Crontab调度器配置
如何在IIS服务器上快速部署高效网站?
如何用PHP快速搭建CMS系统?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
Laravel如何记录自定义日志?(Log频道配置)
无锡营销型网站制作公司,无锡网选车牌流程?
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
如何实现建站之星域名转发设置?
Linux网络带宽限制_tc配置实践解析【教程】
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
JS碰撞运动实现方法详解
javascript基于原型链的继承及call和apply函数用法分析
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何在局域网内绑定自建网站域名?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
java ZXing生成二维码及条码实例分享
C#如何调用原生C++ COM对象详解
Laravel如何为API生成Swagger或OpenAPI文档
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?

