1. mybatis的分页插件
startPage执行后,紧跟的一个查询语句 会被加上limit对应的参数,然后自动执行clearPage(),以免其他语句受到 分页的影响。
但是如果我们没有 执行查询语句,那么,这个分页可能会被使用到下面 执行查询的语句中。
比如在一次偶然中, 这个查询语句执行到了service里的一个查询语句。
所以,强烈建议要在startPage后加上一个查询sql,保证查询sql不会出异常。
PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。
只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象。
如果想在更近一步,由于是线程复用 或 查询sql未执行 导致 没法执行clearPage,那么 可以写一个切面,在方法执行前,执行一下clearPage