有无条件分页查询
发布日期:2021-11-12 07:57:45 浏览次数:32 分类:技术文章

本文共 3582 字,大约阅读时间需要 11 分钟。

无条件分页查询

步骤:// 创建分页查询方法——对应下面a)    @Action(value=“fixedarea_pageFind”)    public String findAll() throws IOException {        // 创建Pageable的对象         Pageable pageable = new PageRequest(page-1, rows);        // 调用业务层实现查询所有        Page
fixedArea = fixedAreaService.findAll(pageable); // 创建map集合设置返回的两个数据——total和rows Map
map = new HashMap
(); map.put(“total”, fixedArea.getTotalElements()); map.put(“rows”, fixedArea.getContent()); // 通过fastjson将数据发送回页面 String json = JSONArray.toJSONString(map); // 设置编码格式 ServletActionContext.getResponse().setContentType(“text/json;charset=utf-8”); // 将json数据发送至页面 ServletActionContext.getResponse().getWriter().write(json); return NONE; }总结: 1.在action类中创建一个分页方法,设置好注解 2.实例化一个pageable对象,传递参数(当前页数-1,每页显示个数) 3.调用业务层的查询方法,返回一个page对象 4.创建一个map集合,并设置两个键值对的数值(total:总记录数,rows:每行的数据) 5.将数据发送回页面 a)使用fastjson: 将map转换成json字符串 设置字符编码:ServletActionContext.getResponse().setContentType(“text/json;charset=utf-8”); 将json字符串返回页面:ServletActionContext.getResponse().getWriter().write(json); b)使用maven中的插件 让action的parentpage继承json-default 在方法的注解上的result属性中设置type为json 将map压入valuestack的栈顶:ServletActionContext.getContext().getValueStack.push(map); return SUCCESS;// 配置分页查询action——对应上面b) @Action(value=“standard_pageQuery”, results={@Result(name=“success”, type=“json”)}) public String pageQuery() throws IOException { // pageAble 这个接口有一个实现类pageRequest,可以直接传入page,rows Pageable pageAble = new PageRequest(page-1, rows); // 调用service层进行数据查询–page:当前页数, rows:每页显示个数 Page
standards = standardService.findAll(pageAble); // 向页面传递数据-total:查询数据总数 rows:多行数据(standard的集合) Map
map = new HashMap
(); map.put(“total”, standards.getTotalElements()); map.put(“rows”, standards.getContent()); // 通过将数据发送回页面 ValueStack valueStack = ServletActionContext.getContext().getValueStack(); valueStack.push(map); return SUCCESS; } 条件分页查询 步骤:// 条件分页查询——特别注意:因为使用的是fastjson,所以action注解上不需要有result属性@Action(value = “fixedArea_pageQuery”)public String pageQuery() { // 创建apgeable对象 Pageable pageable = new PageRequest(page, rows); // 创建条件对象 // root:获取条件表达式的name=?,age=? // query:构造简单查询条件返回, 提供where方法 // cb:构造Predicate 对象,条件对象,构造复杂查询效果 Specification
specification = new Specification
() { @Override public Predicate toPredicate(Root
root, CriteriaQuery
query, CriteriaBuilder cb) { // 创建一个list集合用于存储构造出的查询条件的对象 List
list = new ArrayList
() ; // 构造查询条件 if (StringUtils.isNotBlank(model.getId())) { // 根据定区编号查询 Predicate p1 = cb.equal(root.get(“id”).as(String.class), model.getId()); // 加入list集合中 list.add(p1); } if (StringUtils.isNotBlank(model.getCompany())) { // 根据公司查询_模糊查询 Predicate p2 = cb.equal(root.get(“company”).as(String.class), “%” + model.getCompany() + “%” ); // 加入list集合中 list.add(p2); } return cb.and(list.toArray(new Predicate[0])); } }; // 调用业务层进行查询 Page
pageData = fixedAreaService.findPageData(specification, pageable); // 创建map集合——设置两个参数total和rows Map
map = new HashMap
(); map.put(“total”, pageData.getTotalElements()); map.put(“rows”, pageData.getContent()); // 将查询到的数据转换为json,发送到页面 String json = JSONArray.toJSONString(map); ServletActionContext.getResponse().getWriter().write(json); return SUCCESS; }}总结: 1.创建一个方法 2.创建一个分页查询对象pageable 3.创建一个条件查询对象Specification(这是一个接口,所以使用匿名内部类) a)创建一个list集合,用于存储所有查询条件 b)构造查询条件 4.调用业务层方法,查询 5.将查询结果转换为json 6.将json返回

转载地址:https://blog.csdn.net/happy_meng/article/details/78857145 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:AngularJS双向数据绑定案例
下一篇:Spring框架介绍

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月08日 18时32分32秒