简介
PageHelper是一个Mybatis的分页插件,可以方便地对查询结果进行分页和排序。
在spring + mybatis 中使用 pagehelper
1. maven添加依赖
|
|
2. 编写mybatis-config.xml
|
|
3. 在spring-mybatis配置文件中引入上述配置
|
|
4. 业务逻辑代码
mapper.xml
1234567891011121314151617<select id="getAll" resultMap="BaseResultMap">SELECT<include refid="Base_Column_List" />FROM cityWHERE 1 = 1<if test="pattern != null and pattern != ''">AND (name like CONCAT('%', #{pattern}, '%')ORcountrycode like CONCAT('%', #{pattern}, '%')ORdistrict like CONCAT('%', #{pattern}, '%')ORpopulation like CONCAT('%', #{pattern}, '%'))</if></select>dao
1public List<Map<String,Object>> getAll(Map<String,Object> params);service
1public List<Map<String, Object>> getAll(Map<String,Object> params);serviceImpl
123public List<Map<String, Object>> getAll(Map<String,Object> params) {return dao.getAll(params);}controller
123456789101112131415// 设置分页及排序参数:pageNum,页数,从1开始;pageSize,页面大小,每页查询数据量,如10;orderBy,排序字段及顺序,如"name desc"PageHelper.startPage(pageNum, pageSize);PageHelper.orderBy(orderBy);// 业务模糊查询参数Map<String, Object> params = new HashMap<String, Object>();params.put("pattern", patternStr);// 查询List<Map<String, Object>> dataList = cityService.getAll(params);PageInfo<Map<String, Object>> pageInfo = new PageInfo<Map<String, Object>>(dataList);// 结果pageInfo.getTotal();// 总结果数,如4079pageInfo.getList();// 数据结果,本次查询返回结果,如10个ajax请求
1234567891011"ajax": {"url": "city/getall","type": "POST","data": {pageNum: 1; //查询第一页pageSize: 10; //查询10条记录orderColumn: "name"; // 后台的orderBy通过这里的orderColumn + orderDir拼接而成。orderDir: "desc"; //但是为了防止sql注入及非法参数,最好后台增加方法判断参数合法性,并返回合法值。pattern: "tenny"; //业务相关参数,模糊查询}}
查看结果
通过日志可以看到,插件对sql做了处理:1.先查询一条总数,2.在原sql上加入分页条件进行查询。
pageInfo封装了查询条件及结果集: