类 DataChangeRecorderInnerInterceptor

java.lang.Object
com.baomidou.mybatisplus.extension.plugins.inner.DataChangeRecorderInnerInterceptor
所有已实现的接口:
InnerInterceptor

public class DataChangeRecorderInnerInterceptor extends Object implements InnerInterceptor

数据变动记录插件 默认会生成一条log,格式: ----------------------INSERT LOG------------------------------

{ "tableName": "h2user", "operation": "insert", "recordStatus": "true", "changedData": [ { "LAST_UPDATED_DT": "null->2022-08-22 18:49:16.512", "TEST_ID": "null->1561666810058739714", "AGE": "null->THREE" } ], "cost(ms)": 0 }

* ----------------------UPDATE LOG------------------------------

{ "tableName": "h2user", "operation": "update", "recordStatus": "true", "changedData": [ { "TEST_ID": "102", "AGE": "2->THREE", "FIRSTNAME": "DOU.HAO->{\"json\":\"abc\"}", "LAST_UPDATED_DT": "null->2022-08-22 18:49:16.512" } ], "cost(ms)": 0 }

作者:
yuxiaobin
  • 字段详细资料

    • logger

      protected final org.slf4j.Logger logger
    • IGNORED_TABLE_COLUMN_PROPERTIES

      public static final String IGNORED_TABLE_COLUMN_PROPERTIES
      另请参阅:
  • 构造器详细资料

    • DataChangeRecorderInnerInterceptor

      public DataChangeRecorderInnerInterceptor()
  • 方法详细资料

    • beforePrepare

      public void beforePrepare(org.apache.ibatis.executor.statement.StatementHandler sh, Connection connection, Integer transactionTimeout)
      从接口复制的说明: InnerInterceptor
      StatementHandler.prepare(Connection, Integer) 操作前置处理

      改改sql啥的

      指定者:
      beforePrepare 在接口中 InnerInterceptor
      参数:
      sh - StatementHandler(可能是代理对象)
      connection - Connection
      transactionTimeout - transactionTimeout
    • allowProcess

      protected boolean allowProcess(String sql)
      判断哪些SQL需要处理 默认INSERT/UPDATE/DELETE语句
      参数:
      sql -
      返回:
    • dealOperationResult

      protected void dealOperationResult(DataChangeRecorderInnerInterceptor.OperationResult operationResult)
      处理数据更新结果,默认打印
      参数:
      operationResult -
    • processInsert

      public DataChangeRecorderInnerInterceptor.OperationResult processInsert(net.sf.jsqlparser.statement.insert.Insert insertStmt, org.apache.ibatis.mapping.BoundSql boundSql)
    • processUpdate

      public DataChangeRecorderInnerInterceptor.OperationResult processUpdate(net.sf.jsqlparser.statement.update.Update updateStmt, org.apache.ibatis.mapping.MappedStatement mappedStatement, org.apache.ibatis.mapping.BoundSql boundSql, Connection connection)
    • getUpdatedColumnDatas

      protected Map<String,Object> getUpdatedColumnDatas(String tableName, org.apache.ibatis.mapping.BoundSql updateSql, net.sf.jsqlparser.statement.Statement statement)
    • processDelete

      public DataChangeRecorderInnerInterceptor.OperationResult processDelete(net.sf.jsqlparser.statement.delete.Delete deleteStmt, org.apache.ibatis.mapping.MappedStatement mappedStatement, org.apache.ibatis.mapping.BoundSql boundSql, Connection connection)
    • setBatchUpdateLimit

      public DataChangeRecorderInnerInterceptor setBatchUpdateLimit(int limit)
      设置批量更新记录条数上限
      参数:
      limit -
      返回:
    • openBatchUpdateLimitation

      public DataChangeRecorderInnerInterceptor openBatchUpdateLimitation()
    • configTableLimitation

      public DataChangeRecorderInnerInterceptor configTableLimitation(String tableName, int limit)
    • setProperties

      public void setProperties(Properties properties)
      ignoredColumns = TABLE_NAME1.COLUMN1,COLUMN2; TABLE2.COLUMN1,COLUMN2; TABLE3.*; *.COLUMN1,COLUMN2 多个表用分号分隔 TABLE_NAME1.COLUMN1,COLUMN2 : 表示忽略这个表的这2个字段 TABLE3.*: 表示忽略这张表的INSERT/UPDATE,delete暂时还保留 *.COLUMN1,COLUMN2:表示所有表的这个2个字段名都忽略
      指定者:
      setProperties 在接口中 InnerInterceptor
      参数:
      properties -