有无条件分页查询

无条件分页查询

步骤:
// 创建分页查询方法——对应下面a)
    @Action(value=“fixedarea_pageFind”)
    public String findAll() throws IOException {
        // 创建Pageable的对象 
        Pageable pageable = new PageRequest(page-1, rows);

        // 调用业务层实现查询所有
        Page<FixedArea> fixedArea = fixedAreaService.findAll(pageable);

        // 创建map集合设置返回的两个数据——total和rows
        Map<String , Object> map = new HashMap<String, Object>();
        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<Standard> standards = standardService.findAll(pageAble);

        // 向页面传递数据-total:查询数据总数 rows:多行数据(standard的集合)
        Map<String, Object> map = new HashMap<String, Object>(); 
        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<FixedArea> specification = new Specification<FixedArea>() {

        @Override
        public Predicate toPredicate(Root<FixedArea> root, CriteriaQuery<?> query,
                CriteriaBuilder cb) {
            // 创建一个list集合用于存储构造出的查询条件的对象
            List<Predicate> list = new ArrayList<Predicate>() ;

            // 构造查询条件
            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<FixedArea> pageData = fixedAreaService.findPageData(specification, pageable);

    // 创建map集合——设置两个参数total和rows
    Map<String, Object> map = new HashMap<String, Object>();
    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返回                        
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值