类 PaginationInnerInterceptor
- java.lang.Object
-
- com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
-
- 所有已实现的接口:
InnerInterceptor
public class PaginationInnerInterceptor extends java.lang.Object implements InnerInterceptor
分页拦截器默认对 left join 进行优化,虽然能优化count,但是加上分页的话如果1对多本身结果条数就是不正确的
- 从以下版本开始:
- 3.4.0
- 作者:
- hubin
-
-
字段概要
字段 修饰符和类型 字段 说明 protected static java.util.List<net.sf.jsqlparser.statement.select.SelectItem>COUNT_SELECT_ITEM获取jsqlparser中count的SelectItemprotected static java.util.Map<java.lang.String,org.apache.ibatis.mapping.MappedStatement>countMsCacheprotected org.apache.ibatis.logging.Logloggerprotected java.lang.LongmaxLimit单页分页条数限制protected booleanoptimizeJoin生成 countSql 优化掉 join 现在只支持 left joinprotected booleanoverflow溢出总页数后是否进行处理
-
构造器概要
构造器 构造器 说明 PaginationInnerInterceptor()PaginationInnerInterceptor(com.baomidou.mybatisplus.annotation.DbType dbType)PaginationInnerInterceptor(IDialect dialect)
-
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected java.util.List<net.sf.jsqlparser.statement.select.OrderByElement>addOrderByElements(java.util.List<com.baomidou.mybatisplus.core.metadata.OrderItem> orderList, java.util.List<net.sf.jsqlparser.statement.select.OrderByElement> orderByElements)protected java.lang.StringautoCountSql(com.baomidou.mybatisplus.core.metadata.IPage<?> page, java.lang.String sql)获取自动优化的 countSqlvoidbeforeQuery(org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement ms, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql)Executor.query(MappedStatement, Object, RowBounds, ResultHandler, CacheKey, BoundSql)操作前置处理protected org.apache.ibatis.mapping.MappedStatementbuildAutoCountMappedStatement(org.apache.ibatis.mapping.MappedStatement ms)构建 mp 自用自动的 MappedStatementprotected org.apache.ibatis.mapping.MappedStatementbuildCountMappedStatement(org.apache.ibatis.mapping.MappedStatement ms, java.lang.String countId)获取指定的 id 的 MappedStatementprotected booleancanEqual(java.lang.Object other)java.lang.StringconcatOrderBy(java.lang.String originalSql, java.util.List<com.baomidou.mybatisplus.core.metadata.OrderItem> orderList)查询SQL拼接Order Byprotected booleancontinuePage(com.baomidou.mybatisplus.core.metadata.IPage<?> page)count 查询之后,是否继续执行分页booleanequals(java.lang.Object o)protected IDialectfindIDialect(org.apache.ibatis.executor.Executor executor)获取分页方言类的逻辑com.baomidou.mybatisplus.annotation.DbTypegetDbType()数据库类型IDialectgetDialect()方言实现类org.apache.ibatis.logging.LoggetLogger()java.lang.LonggetMaxLimit()单页分页条数限制protected voidhandlerLimit(com.baomidou.mybatisplus.core.metadata.IPage<?> page, java.lang.Long limit)处理超出分页条数限制,默认归为限制数protected voidhandlerOverflow(com.baomidou.mybatisplus.core.metadata.IPage<?> page)处理页数溢出,默认设置为第一页inthashCode()booleanisOptimizeJoin()生成 countSql 优化掉 join 现在只支持 left joinbooleanisOverflow()溢出总页数后是否进行处理protected java.lang.StringlowLevelCountSql(java.lang.String originalSql)无法进行count优化时,降级使用此方法voidsetDbType(com.baomidou.mybatisplus.annotation.DbType dbType)数据库类型voidsetDialect(IDialect dialect)方言实现类voidsetMaxLimit(java.lang.Long maxLimit)单页分页条数限制voidsetOptimizeJoin(boolean optimizeJoin)生成 countSql 优化掉 join 现在只支持 left joinvoidsetOverflow(boolean overflow)溢出总页数后是否进行处理voidsetProperties(java.util.Properties properties)java.lang.StringtoString()booleanwillDoQuery(org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement ms, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql)这里进行count,如果count为0这返回false(就是不再执行sql了)-
从接口继承的方法 com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor
beforeGetBoundSql, beforePrepare, beforeUpdate, willDoUpdate
-
-
-
-
字段详细资料
-
COUNT_SELECT_ITEM
protected static final java.util.List<net.sf.jsqlparser.statement.select.SelectItem> COUNT_SELECT_ITEM
获取jsqlparser中count的SelectItem
-
countMsCache
protected static final java.util.Map<java.lang.String,org.apache.ibatis.mapping.MappedStatement> countMsCache
-
logger
protected final org.apache.ibatis.logging.Log logger
-
overflow
protected boolean overflow
溢出总页数后是否进行处理
-
maxLimit
protected java.lang.Long maxLimit
单页分页条数限制
-
optimizeJoin
protected boolean optimizeJoin
生成 countSql 优化掉 join 现在只支持 left join- 从以下版本开始:
- 3.4.2
-
-
构造器详细资料
-
PaginationInnerInterceptor
public PaginationInnerInterceptor(com.baomidou.mybatisplus.annotation.DbType dbType)
-
PaginationInnerInterceptor
public PaginationInnerInterceptor(IDialect dialect)
-
PaginationInnerInterceptor
public PaginationInnerInterceptor()
-
-
方法详细资料
-
willDoQuery
public boolean willDoQuery(org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement ms, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql) throws java.sql.SQLException这里进行count,如果count为0这返回false(就是不再执行sql了)- 指定者:
willDoQuery在接口中InnerInterceptor- 参数:
executor- Executor(可能是代理对象)ms- MappedStatementparameter- parameterrowBounds- rowBoundsresultHandler- resultHandlerboundSql- boundSql- 返回:
- 新的 boundSql
- 抛出:
java.sql.SQLException
-
beforeQuery
public void beforeQuery(org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement ms, java.lang.Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql) throws java.sql.SQLException从接口复制的说明:InnerInterceptorExecutor.query(MappedStatement, Object, RowBounds, ResultHandler, CacheKey, BoundSql)操作前置处理改改sql啥的
- 指定者:
beforeQuery在接口中InnerInterceptor- 参数:
executor- Executor(可能是代理对象)ms- MappedStatementparameter- parameterrowBounds- rowBoundsresultHandler- resultHandlerboundSql- boundSql- 抛出:
java.sql.SQLException
-
findIDialect
protected IDialect findIDialect(org.apache.ibatis.executor.Executor executor)
获取分页方言类的逻辑- 参数:
executor- Executor- 返回:
- 分页方言类
-
buildCountMappedStatement
protected org.apache.ibatis.mapping.MappedStatement buildCountMappedStatement(org.apache.ibatis.mapping.MappedStatement ms, java.lang.String countId)获取指定的 id 的 MappedStatement- 参数:
ms- MappedStatementcountId- id- 返回:
- MappedStatement
-
buildAutoCountMappedStatement
protected org.apache.ibatis.mapping.MappedStatement buildAutoCountMappedStatement(org.apache.ibatis.mapping.MappedStatement ms)
构建 mp 自用自动的 MappedStatement- 参数:
ms- MappedStatement- 返回:
- MappedStatement
-
autoCountSql
protected java.lang.String autoCountSql(com.baomidou.mybatisplus.core.metadata.IPage<?> page, java.lang.String sql)获取自动优化的 countSql- 参数:
page- 参数sql- sql- 返回:
- countSql
-
lowLevelCountSql
protected java.lang.String lowLevelCountSql(java.lang.String originalSql)
无法进行count优化时,降级使用此方法- 参数:
originalSql- 原始sql- 返回:
- countSql
-
concatOrderBy
public java.lang.String concatOrderBy(java.lang.String originalSql, java.util.List<com.baomidou.mybatisplus.core.metadata.OrderItem> orderList)查询SQL拼接Order By- 参数:
originalSql- 需要拼接的SQL- 返回:
- ignore
-
addOrderByElements
protected java.util.List<net.sf.jsqlparser.statement.select.OrderByElement> addOrderByElements(java.util.List<com.baomidou.mybatisplus.core.metadata.OrderItem> orderList, java.util.List<net.sf.jsqlparser.statement.select.OrderByElement> orderByElements)
-
continuePage
protected boolean continuePage(com.baomidou.mybatisplus.core.metadata.IPage<?> page)
count 查询之后,是否继续执行分页- 参数:
page- 分页对象- 返回:
- 是否
-
handlerLimit
protected void handlerLimit(com.baomidou.mybatisplus.core.metadata.IPage<?> page, java.lang.Long limit)处理超出分页条数限制,默认归为限制数- 参数:
page- IPage
-
handlerOverflow
protected void handlerOverflow(com.baomidou.mybatisplus.core.metadata.IPage<?> page)
处理页数溢出,默认设置为第一页- 参数:
page- IPage
-
setProperties
public void setProperties(java.util.Properties properties)
- 指定者:
setProperties在接口中InnerInterceptor
-
getLogger
public org.apache.ibatis.logging.Log getLogger()
-
isOverflow
public boolean isOverflow()
溢出总页数后是否进行处理
-
getMaxLimit
public java.lang.Long getMaxLimit()
单页分页条数限制
-
getDbType
public com.baomidou.mybatisplus.annotation.DbType getDbType()
数据库类型查看
findIDialect(Executor)逻辑
-
getDialect
public IDialect getDialect()
方言实现类查看
findIDialect(Executor)逻辑
-
isOptimizeJoin
public boolean isOptimizeJoin()
生成 countSql 优化掉 join 现在只支持 left join- 从以下版本开始:
- 3.4.2
-
setOverflow
public void setOverflow(boolean overflow)
溢出总页数后是否进行处理
-
setMaxLimit
public void setMaxLimit(java.lang.Long maxLimit)
单页分页条数限制
-
setDbType
public void setDbType(com.baomidou.mybatisplus.annotation.DbType dbType)
数据库类型查看
findIDialect(Executor)逻辑
-
setDialect
public void setDialect(IDialect dialect)
方言实现类查看
findIDialect(Executor)逻辑
-
setOptimizeJoin
public void setOptimizeJoin(boolean optimizeJoin)
生成 countSql 优化掉 join 现在只支持 left join- 从以下版本开始:
- 3.4.2
-
equals
public boolean equals(java.lang.Object o)
- 覆盖:
equals在类中java.lang.Object
-
canEqual
protected boolean canEqual(java.lang.Object other)
-
hashCode
public int hashCode()
- 覆盖:
hashCode在类中java.lang.Object
-
toString
public java.lang.String toString()
- 覆盖:
toString在类中java.lang.Object
-
-