类 MultiTenantLineInnerInterceptor

java.lang.Object
com.baomidou.mybatisplus.extension.parser.JsqlParserSupport
top.tangyh.basic.database.plugins.MultiTenantLineInnerInterceptor
所有已实现的接口:
com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor

public class MultiTenantLineInnerInterceptor extends com.baomidou.mybatisplus.extension.parser.JsqlParserSupport implements com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor
COLUMN 级别多租户拦截器 相对于mybatis-plus 的 TenantLineInnerInterceptor,本插件支持: 1. select 语句 where条件拼接多个租户id (tenant_id in (1,2,3,4)) 2. insert、update、 delete 时,不传递租户id,则不拼接
版本:
v1.0
作者:
zuihou, hubin
另请参阅:
  • TenantLineInnerInterceptor
  • 字段概要

    从类继承的字段 com.baomidou.mybatisplus.extension.parser.JsqlParserSupport

    logger
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    protected net.sf.jsqlparser.expression.Expression
    andExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where)
    delete update 语句 where 处理
    protected void
    appendSelectItem(List<net.sf.jsqlparser.statement.select.SelectItem> selectItems)
    追加 SelectItem
    void
    beforePrepare(org.apache.ibatis.executor.statement.StatementHandler sh, Connection connection, Integer transactionTimeout)
     
    void
    beforeQuery(org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement ms, Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql)
     
    protected net.sf.jsqlparser.expression.Expression
    builderExpression(net.sf.jsqlparser.expression.Expression currentExpression, net.sf.jsqlparser.schema.Table table)
    处理条件
    protected net.sf.jsqlparser.schema.Column
    getAliasColumn(net.sf.jsqlparser.schema.Table table)
    租户字段别名设置
    protected void
    processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj)
    delete 语句处理
    protected void
    processFromItem(net.sf.jsqlparser.statement.select.FromItem fromItem)
    处理子查询等
    protected void
    processFunction(net.sf.jsqlparser.expression.Function function)
    处理函数
    protected void
    processInsert(net.sf.jsqlparser.statement.insert.Insert insert, int index, String sql, Object obj)
     
    protected void
    processInsertSelect(net.sf.jsqlparser.statement.select.SelectBody selectBody)
    处理 insert into select
    protected void
    processJoin(net.sf.jsqlparser.statement.select.Join join)
    处理联接语句
    protected void
    processPlainSelect(net.sf.jsqlparser.statement.select.PlainSelect plainSelect)
    处理 PlainSelect
    protected void
    processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object obj)
     
    protected void
    processSelectBody(net.sf.jsqlparser.statement.select.SelectBody selectBody)
     
    protected void
    processSelectItem(net.sf.jsqlparser.statement.select.SelectItem selectItem)
     
    protected void
    processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj)
    update 语句处理
    protected void
    processWhereSubSelect(net.sf.jsqlparser.expression.Expression where)
    处理where条件内的子查询
    void
     

    从类继承的方法 com.baomidou.mybatisplus.extension.parser.JsqlParserSupport

    parserMulti, parserSingle, processParser

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    从接口继承的方法 com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor

    beforeGetBoundSql, beforeUpdate, willDoQuery, willDoUpdate
  • 构造器详细资料

    • MultiTenantLineInnerInterceptor

      public MultiTenantLineInnerInterceptor()
  • 方法详细资料

    • beforeQuery

      public void beforeQuery(org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement ms, Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql) throws SQLException
      指定者:
      beforeQuery 在接口中 com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor
      抛出:
      SQLException
    • beforePrepare

      public void beforePrepare(org.apache.ibatis.executor.statement.StatementHandler sh, Connection connection, Integer transactionTimeout)
      指定者:
      beforePrepare 在接口中 com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor
    • processSelect

      protected void processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object obj)
      覆盖:
      processSelect 在类中 com.baomidou.mybatisplus.extension.parser.JsqlParserSupport
    • processSelectBody

      protected void processSelectBody(net.sf.jsqlparser.statement.select.SelectBody selectBody)
    • processInsert

      protected void processInsert(net.sf.jsqlparser.statement.insert.Insert insert, int index, String sql, Object obj)
      覆盖:
      processInsert 在类中 com.baomidou.mybatisplus.extension.parser.JsqlParserSupport
    • processUpdate

      protected void processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj)
      update 语句处理
      覆盖:
      processUpdate 在类中 com.baomidou.mybatisplus.extension.parser.JsqlParserSupport
    • processDelete

      protected void processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj)
      delete 语句处理
      覆盖:
      processDelete 在类中 com.baomidou.mybatisplus.extension.parser.JsqlParserSupport
    • andExpression

      protected net.sf.jsqlparser.expression.Expression andExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where)
      delete update 语句 where 处理
    • processInsertSelect

      protected void processInsertSelect(net.sf.jsqlparser.statement.select.SelectBody selectBody)
      处理 insert into select

      进入这里表示需要 insert 的表启用了多租户,则 select 的表都启动了

      参数:
      selectBody - SelectBody
    • appendSelectItem

      protected void appendSelectItem(List<net.sf.jsqlparser.statement.select.SelectItem> selectItems)
      追加 SelectItem
      参数:
      selectItems - SelectItem
    • processPlainSelect

      protected void processPlainSelect(net.sf.jsqlparser.statement.select.PlainSelect plainSelect)
      处理 PlainSelect
    • processWhereSubSelect

      protected void processWhereSubSelect(net.sf.jsqlparser.expression.Expression where)
      处理where条件内的子查询

      支持如下: 1. in 2. = 3. > 4. < 5. >= 6. <= 7. <> 8. EXISTS 9. NOT EXISTS

      前提条件: 1. 子查询必须放在小括号中 2. 子查询一般放在比较操作符的右边

      参数:
      where - where 条件
    • processSelectItem

      protected void processSelectItem(net.sf.jsqlparser.statement.select.SelectItem selectItem)
    • processFunction

      protected void processFunction(net.sf.jsqlparser.expression.Function function)
      处理函数

      支持: 1. select fun(args..) 2. select fun1(fun2(args..),args..)

      fixed gitee pulls/141

      参数:
      function -
    • processFromItem

      protected void processFromItem(net.sf.jsqlparser.statement.select.FromItem fromItem)
      处理子查询等
    • processJoin

      protected void processJoin(net.sf.jsqlparser.statement.select.Join join)
      处理联接语句
    • builderExpression

      protected net.sf.jsqlparser.expression.Expression builderExpression(net.sf.jsqlparser.expression.Expression currentExpression, net.sf.jsqlparser.schema.Table table)
      处理条件
    • getAliasColumn

      protected net.sf.jsqlparser.schema.Column getAliasColumn(net.sf.jsqlparser.schema.Table table)
      租户字段别名设置

      tenantId 或 tableAlias.tenantId

      参数:
      table - 表对象
      返回:
      字段
    • setProperties

      public void setProperties(Properties properties)
      指定者:
      setProperties 在接口中 com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor