| | |
| | | import org.apache.ibatis.reflection.MetaObject; |
| | | import org.apache.ibatis.reflection.SystemMetaObject; |
| | | import org.apache.ibatis.session.Configuration; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.lang.reflect.Field; |
| | |
| | | }) |
| | | }) |
| | | public class MySqlInterceptor implements Interceptor { |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(MySqlInterceptor.class.getName()); |
| | | @Override |
| | | public Object intercept(Invocation invocation) throws Throwable { |
| | | |
| | |
| | | //这里可以进行sql修改 |
| | | //获取到原始sql语句 |
| | | String sql = boundSql.getSql(); |
| | | |
| | | String sql2 = null; |
| | | //新增 |
| | | if(sqlCommandType == SqlCommandType.INSERT){ |
| | | sql = SqlUtils.insertSql(sql, VariableAesKey.aesKeysTable); |
| | | sql2 = SqlUtils.insertSql(sql, VariableAesKey.aesKeysTable); |
| | | }else if(sqlCommandType == SqlCommandType.UPDATE){ |
| | | sql = SqlUtils.updateSql(sql, VariableAesKey.aesKeysTable); |
| | | sql2 = SqlUtils.updateSql(sql, VariableAesKey.aesKeysTable); |
| | | }else if(sqlCommandType == SqlCommandType.SELECT){ |
| | | if(VariableAesKey.isRun == 1){ |
| | | sql = SqlUtils.selectSql(sql, VariableAesKey.aesKeysTable); |
| | | sql2 = SqlUtils.selectSql(sql, VariableAesKey.aesKeysTable); |
| | | }else{ |
| | | sql2 = sql; |
| | | } |
| | | }else if(sqlCommandType == SqlCommandType.DELETE){ |
| | | sql = SqlUtils.deleteSql(sql, VariableAesKey.aesKeysTable); |
| | | sql2 = SqlUtils.deleteSql(sql, VariableAesKey.aesKeysTable); |
| | | }else{ |
| | | sql2 = sql; |
| | | } |
| | | |
| | | //通过反射修改sql语句 |
| | | Field field = boundSql.getClass().getDeclaredField("sql"); |
| | | field.setAccessible(true); |
| | | field.set(boundSql, sql); |
| | | if(!"err".equals(sql2)){ |
| | | //通过反射修改sql语句 |
| | | Field field = boundSql.getClass().getDeclaredField("sql"); |
| | | field.setAccessible(true); |
| | | field.set(boundSql, sql2); |
| | | } |
| | | |
| | | return invocation.proceed(); |
| | | |
| | | } |