• Mybatis实现分页查询


    一. 简单分页查询——limit

    使用select查询时,如果结果集数据量较大,一个页面难以处理,就会采用分页查询。

    分页查询,就是从结果集中拿出指定的第n页到第m页的数据来显示。

    1. // limit分页公式
    2. // currentPage:当前页 
    3. // pageSize:每页记录数
    4. limit (currentPage-1) * pageSize,pageSize
    1. // SQL语句
    2. select * from student limit(currentPage-1)*pageSize,pageSize;

    1. 基于注解的简单分页查询

    【Mapper接口】

    1. @select("select * from student limit #{pageBegin},#{pageSize}")
    2. List findByPage(@Param("pageBegin") Integer PageBegin,@Param("PageSize")Integer PageSize);

    【Controller类·】

    1. @GetMapping("/findByPage")
    2. public List findByPage(Integer page,Integer pageSize){
    3. Integer pageBegin = (page-1) * pageSize;
    4. return StudentMapper.findByPage(pageBegin,pageSize);
    5. }

    二.基于mapper.xml的复杂分页

    1. 【定义Page类——封装分页结果】

    1. /**
    2. * 分页结果封装对象
    3. */
    4. @AllArgsConstructor
    5. @NoArgsConstructor
    6. @Data
    7. public class PageResult implements Serializable{
    8. private Long total;//总记录数
    9. private List rows;//当前页结果
    10. }

    2.【定义PageResult类——封装查询条件】

     封装查询条件
     请求参数包括页码、每页显示记录数、查询条件。
     请求参数的json格式为:{currentPage:1,pageSize:10,queryString:''apesource''}
    1. // 分页请求。
    2. @AllArgsConstructor
    3. @NoArgsConstructor
    4. @Data
    5. public class QueryPageBean implements Serializable{
    6. private Integer currentPage;//当前页码
    7. private Integer pageSize;//每页记录数
    8. private String queryString;//查询条件
    9. public QueryPageBean(Integer currentPage, Integer pageSize) {
    10. this.currentPage = currentPage;
    11. this.pageSize = pageSize;
    12. }
    13. }

    3.【Dao层

    1. /*** 持久层Dao接口 */
    2. @Mapper
    3. public interface CheckGroupDao {
    4. public Page selectByCondition(String queryString);
    5. }

    4.【xxxMapper.xml映射文件】

    5.【Service层

    1. @Override
    2. public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString)         {
    3. PageHelper.startPage(currentPage, pageSize);
    4. Page page = checkGroupDao.selectByCondition(queryString);
    5. return new PageResult(page.getTotal(), page.getResult());
    6. }

    6. 【Controller层】

    1. //分页查询
    2. @PostMapping("/findPage")
    3. public PageResult findPage(@RequestBody QueryPageBean queryPageBean) {
    4. try {
    5. PageResult pageResult = checkGroupService.pageQuery(queryPageBean.getCurrentPage(),queryPageBean.getPageSize(),queryPageBean.getQueryString());
    6. return pageResult;
    7. } catch (Exception e) {
    8. return null;
    9. }
    10. }

  • 相关阅读:
    Steam通过短信验证来遏制带有恶意软件的更新
    java学习--day8 (面向对象)
    解读论文《Agglomerative clustering of a search engine query log》,以解决搜索推荐相关问题
    Java List集合排序 Java8 List集合排序方法 Java Lambda集合排序
    java集合 list转map一些常用的方式(Stream流,,,)
    构建高效且可伸缩的结果缓存
    你想要创建一个属于自己的网站吗?十大免费网站
    空间滤波-统计排序滤波器
    OPENCV实现暴力特征匹配
    万字 HashMap 详解,基础(优雅)永不过时
  • 原文地址:https://blog.csdn.net/weixin_45939128/article/details/127898701