美文网首页程序员
Mbatis分页插件,使用方式,和注意事项

Mbatis分页插件,使用方式,和注意事项

作者: momdiemg | 来源:发表于2019-11-08 11:58 被阅读0次

方式一

//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List<Country> list = countryMapper.selectAll();
PageInfo pageinfo=new PageInfo(list )

方式二,直接获取pageinfo

Page<Country> page = PageHelper.startPage(1, 10).doSelectPage(()-> countryMapper.selectAll());

PageInfo pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> countryMapper.selectAll());

long total = PageHelper.count(()->countryMapper.selectAll(country));

分页不安全

什么时候会导致不安全的分页?
PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。

只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象。

如果代码在进入 Executor 前发生异常,就会导致线程不可用,这属于人为的 Bug(例如接口方法和 XML 中的不匹配,导致找不到 MappedStatement 时), 这种情况由于线程不可用,也不会导致 ThreadLocal 参数被错误的使用。

但是如果你写出下面这样的代码,就是不安全的用法:

PageHelper.startPage(1, 10);
List<Country> list;
if(param1 != null){
    list = countryMapper.selectIf(param1);
} else {
    list = new ArrayList<Country>();
}

这种情况下由于 param1 存在 null 的情况,就会导致 PageHelper 生产了一个分页参数,但是没有被消费,这个参数就会一直保留在这个线程上。当这个线程再次被使用时,就可能导致不该分页的方法去消费这个分页参数,这就产生了莫名其妙的分页。

上面这个代码,应该写成下面这个样子:

List<Country> list;
if(param1 != null){
    PageHelper.startPage(1, 10);
    list = countryMapper.selectIf(param1);
} else {
    list = new ArrayList<Country>();
}

这种写法就能保证安全。

相关文章

  • Mbatis分页插件,使用方式,和注意事项

    方式一 方式二,直接获取pageinfo 分页不安全 什么时候会导致不安全的分页?PageHelper 方法使用了...

  • Mybatis-PageHelper使用方法

    使用方法 引入分页插件引入分页插件有下面2种方式,推荐使用 Maven 方式。1). 引入 Jar 包你可以从下面...

  • MybatisPlus实现分页

    常见的分页方式 1,原始的limit分页 2,使用pageHelper第三方插件分页 3,使用MabatisPlu...

  • MyBatis之分页

    五、分页 目录:使用Limit分页、RowBounds分页、分页插件 1.使用Limit分页 语法: 使用MyBa...

  • Mybatis框架如何使用分页插件呢?

    分页插件使用的方式 修改 pom 文件,添加分页 jar 包依赖 修改 mybatis.xml 文件 UserDa...

  • 2019-05-28 分页设计

    分页组件mricode 分页插件下载 如何使用 首先导入css和js 创建分页显示标签 Ajax分页 初始化 这里...

  • Mybatis Plus 分页插件

    1. 在config文件里面新增分页插件 2. 在代码里使用分页插件

  • 利用Aspect对PageHelper的简单封装

    PageHelper是一个Mybatis插件,是一个非常方便使用的分页插件,常用方式为:PageHelper.st...

  • 封装分页插件

    分页插件开发 1、分页插件的使用 2、分页插件的参数通常以表格的形式: 参数参数表示的意义data(必须写) 页面...

  • Mybatis分页插件的使用流程

    如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。该插件支持任何复杂的单表、多表分页。...

网友评论

    本文标题:Mbatis分页插件,使用方式,和注意事项

    本文链接:https://www.haomeiwen.com/subject/gppibctx.html