话不多说,请看代码:
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; }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小牛知识库!
本文向大家介绍JPA多条件复杂SQL动态分页查询功能,包括了JPA多条件复杂SQL动态分页查询功能的使用技巧和注意事项,需要的朋友参考一下 概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式。 环境 springBoot IDEA2017.3.4 JDK8 pom.x
问题内容: 我想用cakephp进行这样的查询: 这是我的$ conditions代码: 我正在使用Debugger :: dump()方法显示结果,并且结果仅使用最后一个“ OR”条件,而不是同时使用“ OR”条件: 我的问题是,如何进行查询以同时使用“ OR”条件? 请尽快回复..在此先感谢:) 问题答案: 请尝试以下方法: 将是 任何阵列没有指定,或者是。无需手动指定。
我正在探索动态编程设计方法如何与问题的潜在组合属性相关联。 为此,我正在研究硬币兑换问题的典型实例:让和
什么是 Nutz.Dao 中的复杂SQL条件 对于 Nutz.Dao 来说,它本质上就是将你的 Java 对象转化成 SQL,然后交给 JDBC 去执行。 而 SQL 中,当执行数据删除和查询操作时,最常用的就是 WHERE 关键字。 WHERE 关键字后面的就是所谓的复杂查询条件 Nutz.Dao 将如何如何使用这个条件 Dao 接口的 clear 方法和 query 方法的第二个参数,就是为了
本文向大家介绍JSP实现带查询条件的通用分页组件,包括了JSP实现带查询条件的通用分页组件的使用技巧和注意事项,需要的朋友参考一下 分页功能的代码就是这样的,在需要展示列表的页面,我们基本都需要加上分页功能,如果某天boss想要修改分页功能的样式,我们不能去一个一个的改吧。 下边给大家分享一个自己封装的通用分页组件。 1. 效果展示 2. 使用方式 1 )在需要显示分页信息的位置,直接引入pagi
给定集合"foo",我们有字段"bar",看起来像这样: 如何查询字段“bar”上满足以下条件的所有“foo”:[14,18]中的“uid”=2和“mid”