Mybatis实现分页查询的详细流程
作者:章鱼小丸子duduu
这篇文章主要给大家介绍了关于Mybatis实现分页查询的详细流程,MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,需要的朋友可以参考下
一. 简单分页查询——limit
使用select查询时,如果结果集数据量较大,一个页面难以处理,就会采用分页查询。
分页查询,就是从结果集中拿出指定的第n页到第m页的数据来显示。
// limit分页公式
// currentPage:当前页
// pageSize:每页记录数
limit (currentPage-1) * pageSize,pageSize
// SQL语句 select * from student limit(currentPage-1)*pageSize,pageSize;
1. 基于注解的简单分页查询
【Mapper接口】
@select("select * from student limit #{pageBegin},#{pageSize}") List<Student> findByPage(@Param("pageBegin") Integer PageBegin,@Param("PageSize")Integer PageSize);
【Controller类·】
@GetMapping("/findByPage") public List<Student> findByPage(Integer page,Integer pageSize){ Integer pageBegin = (page-1) * pageSize; return StudentMapper.findByPage(pageBegin,pageSize); }
二.基于mapper.xml的复杂分页
1. 【定义Page类——封装分页结果】
/** * 分页结果封装对象 */ @AllArgsConstructor @NoArgsConstructor @Data public class PageResult implements Serializable{ private Long total;//总记录数 private List rows;//当前页结果 }
2.【定义PageResult类——封装查询条件】
封装查询条件
请求参数包括页码、每页显示记录数、查询条件。
请求参数的json格式为:{currentPage:1,pageSize:10,queryString:''apesource''}
// 分页请求。 @AllArgsConstructor @NoArgsConstructor @Data public class QueryPageBean implements Serializable{ private Integer currentPage;//当前页码 private Integer pageSize;//每页记录数 private String queryString;//查询条件 public QueryPageBean(Integer currentPage, Integer pageSize) { this.currentPage = currentPage; this.pageSize = pageSize; } }
3.【Dao层】
/*** 持久层Dao接口 */ @Mapper public interface CheckGroupDao { public Page<CheckGroup> selectByCondition(String queryString); }
4.【xxxMapper.xml映射文件】
<!--动态查询:分页查询--> <select id="selectByCondition" parameterType="string" resultType="com.apesource.graduation_project.pojo.CheckGroup"> select * from t_checkgroup <if test="value != null and value.length > 0"> where code = #{value} or name = #{value} or helpCode = #{value} </if> </select>
5.【Service层】
@Override public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString) { PageHelper.startPage(currentPage, pageSize); Page<CheckGroup> page = checkGroupDao.selectByCondition(queryString); return new PageResult(page.getTotal(), page.getResult()); }
6. 【Controller层】
//分页查询 @PostMapping("/findPage") public PageResult findPage(@RequestBody QueryPageBean queryPageBean) { try { PageResult pageResult = checkGroupService.pageQuery(queryPageBean.getCurrentPage(),queryPageBean.getPageSize(),queryPageBean.getQueryString()); return pageResult; } catch (Exception e) { return null; } }
总结
到此这篇关于Mybatis实现分页查询的文章就介绍到这了,更多相关Mybatis分页查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!