需求描述:
最近项目中一个需求涉及到数据同步,由于环境原因导致只能通过webservice
同步执行的sql
语句,故需要获取数据库实际执行的增删改sql
语句到sql_log
表中以同步。
编写mybatis插件拦截sql语句
package net.mshome.twisted.tmall.interceptor;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.enums.IEnum;
import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler;
import lombok.extern.slf4j.Slf4j;
import net.mshome.twisted.tmall.entity.SqlLog;
import net.mshome.twisted.tmall.service.ISqlLogService;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.mapping.ParameterMode;
import org.apache.ibatis.plugin.*;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.type.TypeHandlerRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value