无条件分页查询
步骤:
@Action(value=“fixedarea_pageFind”)
public String findAll() throws IOException {
Pageable pageable = new PageRequest(page-1, rows);
Page<FixedArea> fixedArea = fixedAreaService.findAll(pageable);
Map<String , Object> map = new HashMap<String, Object>();
map.put(“total”, fixedArea.getTotalElements());
map.put(“rows”, fixedArea.getContent());
String json = JSONArray.toJSONString(map);
ServletActionContext.getResponse().setContentType(“text/json;charset=utf-8”);
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(value=“standard_pageQuery”, results={@Result(name=“success”, type=“json”)})
public String pageQuery() throws IOException {
Pageable pageAble = new PageRequest(page-1, rows);
Page<Standard> standards = standardService.findAll(pageAble);
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;
}
条件分页查询
步骤:
@Action(value = “fixedArea_pageQuery”)
public String pageQuery() {
Pageable pageable = new PageRequest(page, rows);
Specification<FixedArea> specification = new Specification<FixedArea>() {
@Override
public Predicate toPredicate(Root<FixedArea> root, CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>() ;
if (StringUtils.isNotBlank(model.getId())) {
Predicate p1 = cb.equal(root.get(“id”).as(String.class), model.getId());
list.add(p1);
}
if (StringUtils.isNotBlank(model.getCompany())) {
Predicate p2 = cb.equal(root.get(“company”).as(String.class), “%” + model.getCompany() + “%” );
list.add(p2);
}
return cb.and(list.toArray(new Predicate[0]));
}
};
Page<FixedArea> pageData = fixedAreaService.findPageData(specification, pageable);
Map<String, Object> map = new HashMap<String, Object>();
map.put(“total”, pageData.getTotalElements());
map.put(“rows”, pageData.getContent());
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返回