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分页查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java使用redisson实现分布式锁的示例详解

    Java使用redisson实现分布式锁的示例详解

    这篇文章主要为大家详细介绍了在Java项目中使用redisson实现分布式锁,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-07-07
  • Spring Boot 2.6.x整合Swagger启动失败报错问题的完美解决办法

    Spring Boot 2.6.x整合Swagger启动失败报错问题的完美解决办法

    这篇文章主要给大家介绍了关于Spring Boot 2.6.x整合Swagger启动失败报错问题的完美解决办法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • MyBatis在Spring环境下的事务管理

    MyBatis在Spring环境下的事务管理

    MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能。这篇文章主要介绍了MyBatis在Spring环境下的事务管理 ,需要的朋友可以参考下
    2019-07-07
  • Java集合Stack源码详解

    Java集合Stack源码详解

    java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来使用!
    2018-05-05
  • springMVC前台传数组类型,后台用list类型接收实例代码

    springMVC前台传数组类型,后台用list类型接收实例代码

    这篇文章主要介绍了springMVC前台传数组类型,后台用list类型接收实例代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Java字符串查找的方法总结

    Java字符串查找的方法总结

    在给定的字符串中查找字符或字符串是比较常见的操作,字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符,本文给大家总结了Java字符串查找的方法,需要的朋友可以参考下
    2024-05-05
  • java double类型相加精度问题的解决

    java double类型相加精度问题的解决

    这篇文章主要介绍了java double类型相加精度问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • java并发编程死锁定义及如何避免死锁

    java并发编程死锁定义及如何避免死锁

    这篇文章主要为大家介绍了java并发编程中死锁的详细说明及如何避免死锁的方法,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步
    2022-02-02
  • java web服务器实现跨域访问

    java web服务器实现跨域访问

    这篇文章主要为大家详细介绍了java web服务器实现跨域访问,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java的包装类特性总结

    Java的包装类特性总结

    这篇文章主要介绍Java的包装类的一些特性,包装类的作用,哪些类属于包装类等,文中有详细的代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-05-05

最新评论