ssm分页查询功能实现
2017-10-21 00:00
471 查看
在ssm框架上实现分页查询,具体如下:
1. 首先创建一个分页的实体类
2. Controller ,student对象接收参数,并将对象作为查询参数存入Flexigrid对象中。
3. service 提供page 和total方法
4. dao层定义接口
5. 创建映射文件。
namespace属性值改为上面定义接口的类的全名称。
每一个接口方法对应一个sql,且sql-id需要与接口方法名称保持一致。
接口方法的请求参数对应sql的parameterType属性。
编写sql-id为page、total的sql 语句。
1. 首先创建一个分页的实体类
public class Flexigrid { //符合条件总记录数 private int total; //当前查询的第几页数据 private int page; //总页数 private int totalPage; //每页查询结果结束序号 @JSONField(serialize=false) private int rowEnd; //每页查询结果开始序号 @JSONField(serialize=false) private int rowStart; //每页结果数 private int rp; //查询条件 @JSONField(serialize=false) private Object obj; //返回结果 @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) private List<?> rows; //......其他get、set方法 public int getTotalPage() { if(rp == 0) return 1; // 提取信息行数 int total = this.total; this.totalPage = total / rp; int mod = total % this.rp; if (mod != 0) this.totalPage += 1; return totalPage; } }
2. Controller ,student对象接收参数,并将对象作为查询参数存入Flexigrid对象中。
@Controller @RequestMapping("/student") public class StudentController { @RequestMapping(value = "/page") @ResponseBody public Flexigrid page(@RequestBody Student student) { Flexigrid flex = new Flexigrid(); flex.setObj(student); // 设置查询参数 flex.setPage(student.getPageNo()); //查询的第几页数据 flex.setRp(student.getPageSize()); //每页结果数 flex.setRowStart((flex.getPage() - 1) * flex.getRp()); //查询结果开始序号 flex.setRowEnd(flex.getPage() * flex.getRp()); //查询结果结束序号 List list = studentService.page(flex); //查询的结果集 int total = studentService.total(flex); //符合查询条件的总记录数 flex.setTotal(total); flex.setRows(list); flex.setObj(null); //将查询条件置为空 return flex; } }
3. service 提供page 和total方法
@Service @Transactional(readOnly = true) public class StudentService { /** * 查询分页数据 * @param flex 包含查询条件以及分页数据 * @return */ public List page(Flexigrid flex) { return studentDao.page(flex); } /** * 获取查询信息总数量 * @param flex 包含查询条件以及分页数据 * @return */ public Integer total(Flexigrid flex) { return studentDao.total(flex); } }
4. dao层定义接口
@MyBatisDao public interface StudentDao{ /** * 查询分页数据 * @param flex 包含查询条件以及分页数据 * @return */ List<Student> page(Flexigrid flex); /** * 获取查询信息总数量 * @param flex 包含查询条件以及分页数据 * @return */ Integer total(Flexigrid flex); }
5. 创建映射文件。
namespace属性值改为上面定义接口的类的全名称。
每一个接口方法对应一个sql,且sql-id需要与接口方法名称保持一致。
接口方法的请求参数对应sql的parameterType属性。
编写sql-id为page、total的sql 语句。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!-- 学生信息 mapper --> <!-- namespace指向dao接口 --> <mapper namespace="com.dao.StudentDao" > <!-- 信息个数提取 --> <select id="total" resultType="int" parameterType="com.entity.Flexigrid"> SELECT COUNT(t.ID) FROM T_STUDENT t <where> <if test="obj != null"> <if test="obj.id != null"> AND t.ID=#{obj.id} </if> <if test="obj.studentName != null"> AND t.STUDENT_NAME like '%${obj.studentName}%' </if> </if> </where> </select> <!-- 信息分页 --> <select id="page" resultType="com.entity.Student" parameterType="com.entity.Flexigrid"> SELECT * FROM (SELECT A.*, rownum r FROM ( SELECT t.id FROM T_STUDENT t <where> <if test="obj != null"> <if test="obj.id != null"> AND t.ID=#{obj.id} </if> <if test="obj.studentName != null"> AND t.STUDENT_NAME like '%${obj.studentName}%' </if> </if> </where> ORDER BY t.STUDENT_NAME <![CDATA[ ) A WHERE rownum <=#{rowEnd} )B WHERE r > #{rowStart} ]]> </select> </mapper>
相关文章推荐
- ssm框架查询数据并实现分页功能示例
- AngularJS+Bootstrap 分页功能实现,同时支持模糊查询分页
- android分页查询功能工具类的实现
- phpcmsv9多表联合查询分页功能实现
- 用Java实现异构数据库的高效通用分页查询功能
- JQuery实现基于Ajax的数据查询、排序和分页功能
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- android分页查询功能工具类的实现
- phpcmsv9多表联合查询分页功能实现 可以自定义查询
- android分页查询功能工具类的实现
- SSM整合--ajax实现分页功能()
- AJAX +SpringMVC 实现bootstrap模态框的分页查询功能
- SSM框架集成PageHelper插件,实现分页功能
- springmvc4+hibernate4分页查询功能实现
- android分页查询功能工具类的实现
- springboot+mongodb 实现按日期分组分页查询功能
- SSM(Spring,springmvc,mybatis)+maven+AJAX实现分页功能
- Mybatis实现简单的分页,以及基本的查询修改功能
- java ssm框架实现分页功能 (oracle)
- 在 SSM 中基于 MyBatis-PageHelper 分页插件的分页功能实现