有无条件分页查询

来源:互联网 发布:淘宝居家日用类目 编辑:程序博客网 时间:2024/05/16 14:14

无条件分页查询

步骤:// 创建分页查询方法——对应下面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返回                        
原创粉丝点击