@Signature(type=org.apache.ibatis.executor.statement.StatementHandler.class,method="batch",args=java.sql.Statement.class) @Signature(type=org.apache.ibatis.executor.statement.StatementHandler.class,method="update",args=java.sql.Statement.class) public class OptLogMybatisInterceptor extends Object implements org.apache.ibatis.plugin.Interceptor
| 限定符和类型 | 字段和说明 |
|---|---|
private static String |
PLACEHOLDER |
private OptLogProperties |
properties |
| 构造器和说明 |
|---|
OptLogMybatisInterceptor(OptLogProperties properties) |
| 限定符和类型 | 方法和说明 |
|---|---|
private org.apache.commons.lang3.tuple.Pair<com.baomidou.mybatisplus.core.metadata.TableInfo,OptMapperTable> |
entityTable(String sql)
获取实体对象类型
|
private Object |
getProperty(Object bean,
String propertyName)
获取字段
|
private <T> T |
getTarget(Object target) |
private void |
handleDataLog(String methodId,
org.apache.ibatis.mapping.BoundSql boundSql,
OptMapperTable mapperTable,
org.apache.ibatis.mapping.SqlCommandType type,
com.baomidou.mybatisplus.core.metadata.TableInfo tableInfo,
org.apache.ibatis.session.Configuration configuration)
设置单次sql 的基本信息
|
private int |
indexOfSqlStart(String sql)
获取sql语句开头部分
|
Object |
intercept(org.apache.ibatis.plugin.Invocation invocation) |
private void |
interceptionChain(org.apache.ibatis.plugin.Invocation invocation)
记录日志
|
private boolean |
isIgnoreMethod(String methodId)
是否忽略
|
private ModeEnum |
modeEnum(org.apache.ibatis.mapping.SqlCommandType type,
List<Map<String,Object>> newValues,
Map<String,Map<String,Object>> oldValues)
判定执行类型
|
private List<Map<String,Object>> |
newValueMap(Object object,
OptMapperTable mapperTable,
List<org.apache.ibatis.mapping.ParameterMapping> mappings)
获取到参数组成的原始数据 可能没有主键
update 可以是一个 eg:where for_key = ?
|
private Map<String,Map<String,Object>> |
oldValuesByDb(org.apache.ibatis.session.Configuration configuration,
org.apache.ibatis.mapping.BoundSql boundSql,
OptMapperTable mapperTable,
com.baomidou.mybatisplus.core.metadata.TableInfo tableInfo,
String foreignIdName)
从数据库根据sql 条件查询原始数据转为 id:需要记录字段map
|
private Map<String,Map<String,Object>> |
oneSql(String originalSql,
org.apache.ibatis.session.SqlSession sqlSession,
String statementSql,
org.apache.ibatis.mapping.BoundSql boundSql,
OptMapperTable mapperTable,
String foreignIdName)
可能存在批量sql 执行单次sql
|
Object |
plugin(Object target) |
private Object |
sqlParams(org.apache.ibatis.mapping.BoundSql bound)
获取参数,参数必须为实体对象
|
private String |
sqlValue(Object obj)
sql 值拼接
|
private Map<String,Object> |
valueMap(Object bean,
OptMapperTable mapperTable,
List<org.apache.ibatis.mapping.ParameterMapping> mappings,
String foreignIdName) |
private final OptLogProperties properties
public OptLogMybatisInterceptor(OptLogProperties properties)
public Object intercept(org.apache.ibatis.plugin.Invocation invocation) throws Throwable
intercept 在接口中 org.apache.ibatis.plugin.InterceptorThrowableprivate void interceptionChain(org.apache.ibatis.plugin.Invocation invocation)
invocation - Invocationprivate void handleDataLog(String methodId, org.apache.ibatis.mapping.BoundSql boundSql, OptMapperTable mapperTable, org.apache.ibatis.mapping.SqlCommandType type, com.baomidou.mybatisplus.core.metadata.TableInfo tableInfo, org.apache.ibatis.session.Configuration configuration)
methodId - 请求idboundSql - boundSqlmapperTable - mapperTabletype - 类型tableInfo - 表配置configuration - configurationprivate ModeEnum modeEnum(org.apache.ibatis.mapping.SqlCommandType type, List<Map<String,Object>> newValues, Map<String,Map<String,Object>> oldValues)
type - 类型newValues - 新值oldValues - 旧值private Map<String,Map<String,Object>> oldValuesByDb(org.apache.ibatis.session.Configuration configuration, org.apache.ibatis.mapping.BoundSql boundSql, OptMapperTable mapperTable, com.baomidou.mybatisplus.core.metadata.TableInfo tableInfo, String foreignIdName)
configuration - configurationboundSql - boundSqlmapperTable - mapperTabletableInfo - tableInfoforeignIdName - foreignIdNameprivate Map<String,Map<String,Object>> oneSql(String originalSql, org.apache.ibatis.session.SqlSession sqlSession, String statementSql, org.apache.ibatis.mapping.BoundSql boundSql, OptMapperTable mapperTable, String foreignIdName)
originalSql - sql语句sqlSession - SessionstatementSql - statementSqlboundSql - boundSqlmapperTable - 映射foreignIdName - 外键private int indexOfSqlStart(String sql)
sql - ignoreprivate boolean isIgnoreMethod(String methodId) throws Exception
methodId - 方法Exception - 异常private org.apache.commons.lang3.tuple.Pair<com.baomidou.mybatisplus.core.metadata.TableInfo,OptMapperTable> entityTable(String sql)
sql - sqlprivate Object sqlParams(org.apache.ibatis.mapping.BoundSql bound)
bound - boundprivate List<Map<String,Object>> newValueMap(Object object, OptMapperTable mapperTable, List<org.apache.ibatis.mapping.ParameterMapping> mappings)
object - 参数mapperTable - 实体对象配置private Map<String,Object> valueMap(Object bean, OptMapperTable mapperTable, List<org.apache.ibatis.mapping.ParameterMapping> mappings, String foreignIdName)
private Object getProperty(Object bean, String propertyName) throws IllegalAccessException
bean - 实体propertyName - 属性名称IllegalAccessException - 异常private <T> T getTarget(Object target)
Copyright © 2024. All rights reserved.