Mybatis实现分页查询的详细流程

 更新时间:2023年08月21日 08:42:04   作者:章鱼小丸子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分页查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于字符串常用API(详解)

    基于字符串常用API(详解)

    下面小编就为大家带来一篇基于字符串常用API(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java 超详细讲解Spring MVC异常处理机制

    Java 超详细讲解Spring MVC异常处理机制

    Spring MVC中提供了一个通用的异常处理机制,它提供了一个成熟、简洁并且清晰的异常处理方案。当使用Spring MVC开发Web应用时,利用这套现成的机制进行异常处理也更加自然并且高效
    2022-04-04
  • Java上传文件进度条的实现方法(附demo源码下载)

    Java上传文件进度条的实现方法(附demo源码下载)

    这篇文章主要介绍了Java上传文件进度条的实现方法,可简单实现显示文件上传比特数及进度的功能,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2015-12-12
  • Java基于正则表达式实现xml文件的解析功能详解

    Java基于正则表达式实现xml文件的解析功能详解

    这篇文章主要介绍了Java基于正则表达式实现xml文件的解析功能,结合实例形式分析了java使用正则表达式针对xml文件节点的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • java学生信息管理系统源代码

    java学生信息管理系统源代码

    这篇文章主要为大家详细介绍了java学生信息管理系统源代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Mybatis 大数据量批量写优化的案例详解

    Mybatis 大数据量批量写优化的案例详解

    这篇文章主要介绍了Mybatis 大数据量批量写优化的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Mybatis Plus 大数据游标分页的实现

    Mybatis Plus 大数据游标分页的实现

    使用MyBatis Plus的游标分页,我们可以轻松应对大数据量的场景,本文主要介绍了Mybatis Plus 大数据游标分页的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java中文件创建于写入内容的常见方法

    Java中文件创建于写入内容的常见方法

    在日常开发中,肯定离不开要和文件打交道,今天就简单罗列一下平时比较常用的创建文件并向文件中写入数据的几种方式,希望对大家有一定的帮助
    2023-10-10
  • ReentrantLock 非公平锁实现原理详解

    ReentrantLock 非公平锁实现原理详解

    这篇文章主要为大家介绍了ReentrantLock 非公平锁实现原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringBoot+vue实现登录图片验证码功能

    SpringBoot+vue实现登录图片验证码功能

    这篇文章主要给大家介绍一下如何SpringBoot+vue实现登录图片验证码功能,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-07-07

最新评论