From 8b9cf07b703e89c3f652a2e3bd9140bb491f733b Mon Sep 17 00:00:00 2001 From: guwd Date: Tue, 3 Nov 2020 13:30:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8F=96ms-db?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++ .../config/MybatisInterceptorConfig.java | 43 ------------- .../interceptor/DMInnerInterceptor.java | 61 ------------------- .../interceptor/MysqlInnerInterceptor.java | 45 -------------- 4 files changed, 4 insertions(+), 149 deletions(-) delete mode 100644 src/main/java/net/mingsoft/config/MybatisInterceptorConfig.java delete mode 100644 src/main/java/net/mingsoft/interceptor/DMInnerInterceptor.java delete mode 100644 src/main/java/net/mingsoft/interceptor/MysqlInnerInterceptor.java diff --git a/pom.xml b/pom.xml index 959d53ec..cc238f48 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,10 @@ net.mingsoft ms-mpeople + + net.mingsoft + ms-db + diff --git a/src/main/java/net/mingsoft/config/MybatisInterceptorConfig.java b/src/main/java/net/mingsoft/config/MybatisInterceptorConfig.java deleted file mode 100644 index b962cd41..00000000 --- a/src/main/java/net/mingsoft/config/MybatisInterceptorConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.mingsoft.config; - -import com.baomidou.mybatisplus.annotation.DbType; -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; -import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; -import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils; -import net.mingsoft.interceptor.DMInnerInterceptor; -import net.mingsoft.interceptor.MysqlInnerInterceptor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import javax.sql.DataSource; -import java.sql.SQLException; - -/** - * Mybatis 拦截器配置 - */ -@Configuration -public class MybatisInterceptorConfig { - - @Bean - public MybatisPlusInterceptor mybatisPlusInterceptor(DataSource dataSource, @Autowired(required = false) TenantLineHandler tenantLineHandler) { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - if(tenantLineHandler!=null){ - interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(tenantLineHandler)); - } - try { - //mysql 添加转换sql - DbType dbType = JdbcUtils.getDbType(dataSource.getConnection().getMetaData().getURL()); - if(DbType.MYSQL==dbType){ - interceptor.addInnerInterceptor(new MysqlInnerInterceptor()); - }else if(DbType.DM==dbType){ - interceptor.addInnerInterceptor( new DMInnerInterceptor()); - } - } catch (SQLException e) { - e.printStackTrace(); - } - - return interceptor; - } -} diff --git a/src/main/java/net/mingsoft/interceptor/DMInnerInterceptor.java b/src/main/java/net/mingsoft/interceptor/DMInnerInterceptor.java deleted file mode 100644 index a66b663b..00000000 --- a/src/main/java/net/mingsoft/interceptor/DMInnerInterceptor.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.mingsoft.interceptor; - -import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; -import com.baomidou.mybatisplus.core.toolkit.PluginUtils; -import com.baomidou.mybatisplus.core.toolkit.TableNameParser; -import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; -import org.apache.ibatis.executor.Executor; -import org.apache.ibatis.executor.statement.StatementHandler; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.mapping.SqlCommandType; -import org.apache.ibatis.session.ResultHandler; -import org.apache.ibatis.session.RowBounds; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -public class DMInnerInterceptor implements InnerInterceptor { - - @Override - public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { - PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql); - if (InterceptorIgnoreHelper.willIgnoreDynamicTableName(ms.getId())) return; - mpBs.sql(this.changeTable(mpBs.sql())); - } - - @Override - public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) { - PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh); - MappedStatement ms = mpSh.mappedStatement(); - SqlCommandType sct = ms.getSqlCommandType(); - if (sct == SqlCommandType.INSERT || sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) { - if (InterceptorIgnoreHelper.willIgnoreDynamicTableName(ms.getId())) return; - PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql(); - mpBs.sql(this.changeTable(mpBs.sql())); - } - } - - protected String changeTable(String sql) { - TableNameParser parser = new TableNameParser(sql); - List names = new ArrayList<>(); - parser.accept(names::add); - StringBuilder builder = new StringBuilder(); - int last = 0; - for (TableNameParser.SqlToken name : names) { - int start = name.getStart(); - if (start != last) { - builder.append(sql, last, start); - String value = name.getValue(); - builder.append(String.format("\"%s\"",value)); - } - last = name.getEnd(); - } - if (last != sql.length()) { - builder.append(sql.substring(last)); - } - return builder.toString(); - } -} diff --git a/src/main/java/net/mingsoft/interceptor/MysqlInnerInterceptor.java b/src/main/java/net/mingsoft/interceptor/MysqlInnerInterceptor.java deleted file mode 100644 index 0389e4a4..00000000 --- a/src/main/java/net/mingsoft/interceptor/MysqlInnerInterceptor.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.mingsoft.interceptor; - -import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; -import com.baomidou.mybatisplus.core.toolkit.PluginUtils; -import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; -import org.apache.ibatis.executor.Executor; -import org.apache.ibatis.executor.statement.StatementHandler; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.mapping.SqlCommandType; -import org.apache.ibatis.session.ResultHandler; -import org.apache.ibatis.session.RowBounds; - -import java.sql.Connection; -import java.sql.SQLException; - -/** - * Mysql 适配通用拦截器,主要处理不支持的sql语句 - */ -public class MysqlInnerInterceptor implements InnerInterceptor { - - @Override - public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { - PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql); - if (InterceptorIgnoreHelper.willIgnoreDynamicTableName(ms.getId())) return; - mpBs.sql(this.changeSql(mpBs.sql())); - } - - @Override - public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) { - PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh); - MappedStatement ms = mpSh.mappedStatement(); - SqlCommandType sct = ms.getSqlCommandType(); - if (sct == SqlCommandType.INSERT || sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) { - if (InterceptorIgnoreHelper.willIgnoreDynamicTableName(ms.getId())) return; - PluginUtils.MPBoundSql mpBs = mpSh.mPBoundSql(); - mpBs.sql(this.changeSql(mpBs.sql())); - } - } - - protected String changeSql(String sql) { - //替换所有"为` - return sql.replaceAll("\"","`"); - } -}