首页 > 其他分享 >MyBatis

MyBatis

时间:2023-07-17 11:47:40浏览次数:35  
标签:拦截器 分页 ThreadLocal limit MyBatis rownum order

1、MyBatis 分页原理

(1)

(2)使用插件:拦截器拼接分页sql进行物理分页(mysql-limit oracle-rownum)

PageHelper是MyBatis的一个插件,内部实现了一个PageInterceptor拦截器。Mybatis会加载这个拦截器到拦截器链中。在我们使用过程中先使用PageHelper.startPage这样的语句在当前线程上下文中设置一个ThreadLocal变量,再利用PageInterceptor这个分页拦截器拦截,从ThreadLocal中拿到分页的信息,如果有分页信息拼装分页SQL(limit语句等)进行分页查询,最后再把ThreadLocal中的东西清除掉。

详解:https://blog.csdn.net/fedorafrog/article/details/104412140

  • 题外话:order by 和 limit rownum 并列的话:mysql 是先 order by 再 limit 的(不过插件拼接的话应该都是把 limit 放在外层的?而不是并列);oracle 是先 rownum 再 order by 的,所以想要先 order by 再 rownum 就要 select tmp.* (select....order by)  as tmp where rownum<xxx 
  • PageInterceptor拦截器 实现了 ibatis 接口 org.apache.ibatis.plugin.Interceptor
  • protected static final ThreadLocal<Page> LOCAL_PAGE = new ThreadLocal();
  • 通过 PageInterceptor 类上的 @Intercepts 注解可以看到拦截的是 Executor对象中的query(MappedStatement ms,Object o,RowBounds ob ResultHandler rh)这个方法。
 

标签:拦截器,分页,ThreadLocal,limit,MyBatis,rownum,order
From: https://www.cnblogs.com/suBlog/p/17559614.html

相关文章

  • 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)
    超详细整合SSM框架--(Spring+SpringMVC+MyBatis)阅读该文章之前首先要清楚Spring框架,SpringMVC框架,Mybatis框架。SSM框架,是Spring+SpringMVC+MyBatis的缩写,这个是继SSH之后,目前比较主流的JavaEE企业级框架,适用于搭建各种大型的企业级应用系统。SpringMVC框架:MVC简......
  • Mybatis获取与实践
    Mybatis如何获得MybatisMavenhttps://mvnrepository.com/artifact/org.mybatis/mybatis<!--https://mvnrepository.com/artifact/org.mybatis/mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis<......
  • MyBatis Bug 记录
    动态SQLIf参数Mybatisif判断Integer类型的值不等于''引发的问题(!=''等价于!=0)csdn-ref结论对于Number类型参数,age!=''被Mybatis认定为age!=0解决方案✅使用1,2来表示数据含义✅添加orage==0,来规避该问题✅修改字段类型为varchar不使用N......
  • MyBatis Generator代码生成器
    地址:http://mybatis.org/generator/quickstart.html 依赖<!--mybatis代码生成--><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId>......
  • MybatisPlus
    目录configMybatisPlusConfig.javapackagecom.bijian.mybatisplus.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner......
  • 创建Spring Boot+Spring MVC+Mybatis Demo项目
    参考资料IDEA搭建Springboot+SpringMVC+Mybatis+Mysql(详细、易懂)创建项目创建多个目录把application.properties改成yml格式并补充配置mysql中创建数据库和表createdatabasedb1;usedb1;createtable`user`( `id`INTUNSIGNEDAUTO_INCREMENT, `name`VARCHAR(......
  • 使用MyBatis Plus
    IDEA配置IDEA安装MyBatisX插件。根据IDEA指引来创建SpringBoot项目mybatisplus-demo1。添加依赖添加mybatisplus和lombok依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.0&......
  • MyBatis框架使用问题
    Mybatis根据数组或者List查询List结果数组参数//接口方法ArrayList<User>selectByIds(Integer[]ids);//xml映射文件<selectid="selectByIds"resultMap="BaseResultMap">select*fromuserwhereidin<foreachitem="item&quo......
  • SpringBoot整合mybatis(plus)单表查询和多表查询
    SpringBoot整合mybatis(plus)单表查询和多表查询前言mybatis是springboot常用的操作数据库的框架,能够大大简化数据库操作,其可以进行xml配置开发,也可以进行注解开发。虽然现在有mybatis-plus,功能很强大,但也只是简化了单表操作,多表操作甚是麻烦。小型项目怎么用都可以,但是对于大型项......
  • mybatis-generator 代码生成工具
    官网文档:http://mybatis.org/generator/quickstart.html 引入依赖:<!--代码生成工具https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core--><dependency><groupId>org.mybatis.generator</groupId>......