有无条件分页查询
来源:互联网 发布:淘宝居家日用类目 编辑:程序博客网 时间: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返回
阅读全文
1 0
- 有无条件分页查询
- 分页&条件查询分页
- 分页条件查询页面
- phpwind 二手房数据来源 添加 有无图片附件条件查询
- Java分页查询&条件查询
- JSP交互---分页查询(条件分页查询)
- 带查询条件的分页
- thinkphp 根据查询条件分页
- 带条件的分页查询
- ext4.0分页条件查询
- jpa条件查询和分页
- yii 多条件查询,分页
- SSM分页、多条件查询
- easyUi分页以及条件查询
- JPA多条件查询+分页
- 用户分页多条件查询
- Mybatis的条件分页查询
- ssm根据条件查询分页,后台分页
- IIO子系统文档 ring.txt 翻译
- 我的知乎专栏与公众号
- splay操作集合
- 随机生成个数50和20的字符串分别存在file1,file2中并将在file1中出现且不在file2中的字符存在flie3中
- 无限轮播1
- 有无条件分页查询
- 进程与线程的关系及区别
- Topcoder SRM 726 Hard
- layer关闭弹窗 (弹窗easyui:为datagrid添加radio单选框)
- 斐波拉契数列(Fibonacci)
- 无限轮播2
- JavaScript~ajax~城市三级联动
- linux 安装jdk
- 160个练手CrackMe-041