Merge pull request #22 from z2z2qp/main

拼写错误修改
This commit is contained in:
Michael Yang 2023-05-12 16:51:09 +08:00 committed by GitHub
commit 1c67e8656d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 127 additions and 140 deletions

View File

@ -53,20 +53,14 @@ public abstract class JdbcDialect implements IDialect {
} }
private Map<String, String> buildColumnRemarks(Table table, DatabaseMetaData dbMeta, Connection conn) throws SQLException { private Map<String, String> buildColumnRemarks(Table table, DatabaseMetaData dbMeta, Connection conn) {
Map<String, String> columnRemarks = new HashMap<>(); Map<String, String> columnRemarks = new HashMap<>();
ResultSet colRs = null; try (ResultSet colRs = dbMeta.getColumns(conn.getCatalog(), null, table.getName(), null)) {
try {
colRs = dbMeta.getColumns(conn.getCatalog(), null, table.getName(), null);
while (colRs.next()) { while (colRs.next()) {
columnRemarks.put(colRs.getString("COLUMN_NAME"), colRs.getString("REMARKS")); columnRemarks.put(colRs.getString("COLUMN_NAME"), colRs.getString("REMARKS"));
} }
} catch (Exception e) { } catch (Exception e) {
System.err.println("无法获取字段的备注内容:" + e.getMessage()); System.err.println("无法获取字段的备注内容:" + e.getMessage());
} finally {
if (colRs != null) {
colRs.close();
}
} }
return columnRemarks; return columnRemarks;
} }

View File

@ -22,7 +22,7 @@ import java.util.Map;
public class JdbcTypeMapping { public class JdbcTypeMapping {
private static Map<String, String> mapping = new HashMap<>(); private static final Map<String, String> mapping = new HashMap<>();
static { static {
registerMapping("[B", "byte[]"); registerMapping("[B", "byte[]");

View File

@ -23,7 +23,7 @@ import java.util.*;
public class GeneratorFactory { public class GeneratorFactory {
private static Map<String, IGenerator> generators = new HashMap<>(); private static final Map<String, IGenerator> generators = new HashMap<>();
static { static {
registerGenerator("entity", new EntityGenerator()); registerGenerator("entity", new EntityGenerator());

View File

@ -24,7 +24,7 @@ import java.util.Map;
public class EnjoyTemplate implements ITemplate { public class EnjoyTemplate implements ITemplate {
private Engine engine; private final Engine engine;
public EnjoyTemplate() { public EnjoyTemplate() {
engine = Engine.create("mybatis-flex", engine -> { engine = Engine.create("mybatis-flex", engine -> {

View File

@ -25,8 +25,8 @@ import java.util.Enumeration;
*/ */
public class DefaultMessageFactory implements MessageFactory { public class DefaultMessageFactory implements MessageFactory {
private String platform = "mybatis-flex"; private final String platform = "mybatis-flex";
private String hostIp = getHostIp(); private final String hostIp = getHostIp();
@Override @Override

View File

@ -28,12 +28,12 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
*/ */
public class ScheduledMessageCollector implements MessageCollector, Runnable { public class ScheduledMessageCollector implements MessageCollector, Runnable {
private long period; private final long period;
private ScheduledExecutorService scheduler; private final ScheduledExecutorService scheduler;
private MessageReporter messageSender; private final MessageReporter messageSender;
private List<AuditMessage> messages = Collections.synchronizedList(new ArrayList<>()); private final List<AuditMessage> messages = Collections.synchronizedList(new ArrayList<>());
private ReentrantReadWriteLock rrwLock = new ReentrantReadWriteLock(); private final ReentrantReadWriteLock rrwLock = new ReentrantReadWriteLock();
public ScheduledMessageCollector() { public ScheduledMessageCollector() {
this(10, new ConsoleMessageReporter()); this(10, new ConsoleMessageReporter());

View File

@ -22,9 +22,9 @@ import java.util.List;
public class HttpMessageReporter implements MessageReporter { public class HttpMessageReporter implements MessageReporter {
private String endpoint; private final String endpoint;
private String secretKey; private final String secretKey;
private JSONFormatter jsonFormatter; private final JSONFormatter jsonFormatter;
public HttpMessageReporter(String endpoint, String secretKey, JSONFormatter jsonFormatter) { public HttpMessageReporter(String endpoint, String secretKey, JSONFormatter jsonFormatter) {
this.endpoint = endpoint; this.endpoint = endpoint;

View File

@ -27,7 +27,7 @@ import java.util.Map;
public class DataSourceBuilder { public class DataSourceBuilder {
private static Map<String, String> dataSourceAlias = new HashMap<>(); private static final Map<String, String> dataSourceAlias = new HashMap<>();
static { static {
dataSourceAlias.put("druid", "com.alibaba.druid.pool.DruidDataSource"); dataSourceAlias.put("druid", "com.alibaba.druid.pool.DruidDataSource");
@ -39,7 +39,7 @@ public class DataSourceBuilder {
dataSourceAlias.put("dbcp2", "org.apache.commons.dbcp2.BasicDataSource"); dataSourceAlias.put("dbcp2", "org.apache.commons.dbcp2.BasicDataSource");
} }
private Map<String, String> dataSourceProperties; private final Map<String, String> dataSourceProperties;
public DataSourceBuilder(Map<String, String> dataSourceProperties) { public DataSourceBuilder(Map<String, String> dataSourceProperties) {
this.dataSourceProperties = dataSourceProperties; this.dataSourceProperties = dataSourceProperties;
@ -49,11 +49,7 @@ public class DataSourceBuilder {
String dataSourceClassName = null; String dataSourceClassName = null;
String type = dataSourceProperties.get("type"); String type = dataSourceProperties.get("type");
if (StringUtil.isNotBlank(type)) { if (StringUtil.isNotBlank(type)) {
if (dataSourceAlias.containsKey(type)) { dataSourceClassName = dataSourceAlias.getOrDefault(type, type);
dataSourceClassName = dataSourceAlias.get(type);
} else {
dataSourceClassName = type;
}
} else { } else {
dataSourceClassName = detectDataSourceClass(); dataSourceClassName = detectDataSourceClass();
} }

View File

@ -19,7 +19,7 @@ import java.util.function.Supplier;
public class DataSourceKey { public class DataSourceKey {
private static ThreadLocal<String> keyThreadLocal = new ThreadLocal<>(); private static final ThreadLocal<String> keyThreadLocal = new ThreadLocal<>();
public static void use(String dataSourceKey) { public static void use(String dataSourceKey) {
keyThreadLocal.set(dataSourceKey); keyThreadLocal.set(dataSourceKey);

View File

@ -35,12 +35,12 @@ public class DialectFactory {
* 比如 mybatis-flex 实现的方言中有 bug 或者 有自己的独立实现可以添加自己的方言实现到 * 比如 mybatis-flex 实现的方言中有 bug 或者 有自己的独立实现可以添加自己的方言实现到
* map 用于覆盖系统的方言实现 * map 用于覆盖系统的方言实现
*/ */
private static Map<DbType, IDialect> dialectMap = new EnumMap<>(DbType.class); private static final Map<DbType, IDialect> dialectMap = new EnumMap<>(DbType.class);
/** /**
* 通过设置当前线程的数据库类型以达到在代码执行时随时切换方言的功能 * 通过设置当前线程的数据库类型以达到在代码执行时随时切换方言的功能
*/ */
private static ThreadLocal<DbType> dbTypeThreadLocal = new ThreadLocal<>(); private static final ThreadLocal<DbType> dbTypeThreadLocal = new ThreadLocal<>();
/** /**
@ -104,12 +104,12 @@ public class DialectFactory {
case CUBRID: case CUBRID:
case GOLDILOCKS: case GOLDILOCKS:
case CSIIDB: case CSIIDB:
return new CommonsDialectImpl(KeywordWrap.BACKQUOTE, LimitOffsetProcesser.MYSQL); return new CommonsDialectImpl(KeywordWrap.BACKQUOTE, LimitOffsetProcessor.MYSQL);
case ORACLE: case ORACLE:
return new OracleDialect(LimitOffsetProcesser.ORACLE); return new OracleDialect(LimitOffsetProcessor.ORACLE);
case DM: case DM:
case GAUSS: case GAUSS:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE); return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.ORACLE);
case POSTGRE_SQL: case POSTGRE_SQL:
case SQLITE: case SQLITE:
case HSQL: case HSQL:
@ -123,21 +123,21 @@ public class DialectFactory {
case OPENGAUSS: case OPENGAUSS:
case TDENGINE: case TDENGINE:
case UXDB: case UXDB:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.POSTGRESQL); return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.POSTGRESQL);
case ORACLE_12C: case ORACLE_12C:
return new OracleDialect(LimitOffsetProcesser.DERBY); return new OracleDialect(LimitOffsetProcessor.DERBY);
case FIREBIRD: case FIREBIRD:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DERBY); return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.DERBY);
case SQLSERVER: case SQLSERVER:
return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcesser.DERBY); return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcessor.DERBY);
case SQLSERVER_2005: case SQLSERVER_2005:
return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcesser.DB2); return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcessor.DB2);
case INFORMIX: case INFORMIX:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.INFORMIX); return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.INFORMIX);
case DB2: case DB2:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DB2); return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.DB2);
case SYBASE: case SYBASE:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.SYBASE); return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.SYBASE);
default: default:
return new CommonsDialectImpl(); return new CommonsDialectImpl();
} }

View File

@ -20,13 +20,13 @@ import com.mybatisflex.core.query.QueryWrapper;
/** /**
* limit offset 参数的处理器 * limit offset 参数的处理器
*/ */
public interface LimitOffsetProcesser { public interface LimitOffsetProcessor {
/** /**
* MySql 的处理器 * MySql 的处理器
* 适合 {@link DbType#MYSQL,DbType#MARIADB,DbType#H2,DbType#CLICK_HOUSE,DbType#XCloud} * 适合 {@link DbType#MYSQL,DbType#MARIADB,DbType#H2,DbType#CLICK_HOUSE,DbType#XCloud}
*/ */
LimitOffsetProcesser MYSQL = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor MYSQL = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
sql.append(" LIMIT ").append(limitOffset).append(", ").append(limitRows); sql.append(" LIMIT ").append(limitOffset).append(", ").append(limitRows);
} else if (limitRows != null) { } else if (limitRows != null) {
@ -41,7 +41,7 @@ public interface LimitOffsetProcesser {
* 适合 {@link DbType#SAP_HANA,DbType#IMPALA,DbType#HIGH_GO,DbType#VERTICA,DbType#REDSHIFT} * 适合 {@link DbType#SAP_HANA,DbType#IMPALA,DbType#HIGH_GO,DbType#VERTICA,DbType#REDSHIFT}
* 适合 {@link DbType#OPENGAUSS,DbType#TDENGINE,DbType#UXDB} * 适合 {@link DbType#OPENGAUSS,DbType#TDENGINE,DbType#UXDB}
*/ */
LimitOffsetProcesser POSTGRESQL = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor POSTGRESQL = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
sql.append(" LIMIT ").append(limitRows).append(" OFFSET ").append(limitOffset); sql.append(" LIMIT ").append(limitRows).append(" OFFSET ").append(limitOffset);
} else if (limitRows != null) { } else if (limitRows != null) {
@ -54,7 +54,7 @@ public interface LimitOffsetProcesser {
* derby 的处理器 * derby 的处理器
* 适合 {@link DbType#DERBY,DbType#ORACLE_12C,DbType#SQLSERVER ,DbType#POSTGRE_SQL} * 适合 {@link DbType#DERBY,DbType#ORACLE_12C,DbType#SQLSERVER ,DbType#POSTGRE_SQL}
*/ */
LimitOffsetProcesser DERBY = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor DERBY = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
// OFFSET ** ROWS FETCH NEXT ** ROWS ONLY") // OFFSET ** ROWS FETCH NEXT ** ROWS ONLY")
sql.append(" OFFSET ").append(limitOffset).append(" ROWS FETCH NEXT ").append(limitRows).append(" ROWS ONLY"); sql.append(" OFFSET ").append(limitOffset).append(" ROWS FETCH NEXT ").append(limitRows).append(" ROWS ONLY");
@ -69,7 +69,7 @@ public interface LimitOffsetProcesser {
* db2 的处理器 * db2 的处理器
* 适合 {@link DbType#DB2,DbType#SQLSERVER_2005} * 适合 {@link DbType#DB2,DbType#SQLSERVER_2005}
*/ */
LimitOffsetProcesser DB2 = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor DB2 = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
// OFFSET ** ROWS FETCH NEXT ** ROWS ONLY") // OFFSET ** ROWS FETCH NEXT ** ROWS ONLY")
sql.append(" OFFSET ").append(limitOffset).append(" ROWS FETCH NEXT ").append(limitRows).append(" ROWS ONLY"); sql.append(" OFFSET ").append(limitOffset).append(" ROWS FETCH NEXT ").append(limitRows).append(" ROWS ONLY");
@ -85,7 +85,7 @@ public interface LimitOffsetProcesser {
* 适合 {@link DbType#INFORMIX} * 适合 {@link DbType#INFORMIX}
* 文档 {@link <a href="https://www.ibm.com/docs/en/informix-servers/14.10?topic=clause-restricting-return-values-skip-limit-first-options">https://www.ibm.com/docs/en/informix-servers/14.10?topic=clause-restricting-return-values-skip-limit-first-options</a>} * 文档 {@link <a href="https://www.ibm.com/docs/en/informix-servers/14.10?topic=clause-restricting-return-values-skip-limit-first-options">https://www.ibm.com/docs/en/informix-servers/14.10?topic=clause-restricting-return-values-skip-limit-first-options</a>}
*/ */
LimitOffsetProcesser INFORMIX = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor INFORMIX = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
// SELECT SKIP 2 FIRST 1 * FROM // SELECT SKIP 2 FIRST 1 * FROM
sql.insert(6, " SKIP " + limitOffset + " FIRST " + limitRows); sql.insert(6, " SKIP " + limitOffset + " FIRST " + limitRows);
@ -99,7 +99,7 @@ public interface LimitOffsetProcesser {
* Firebird 的处理器 * Firebird 的处理器
* 适合 {@link DbType#FIREBIRD} * 适合 {@link DbType#FIREBIRD}
*/ */
LimitOffsetProcesser FIREBIRD = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor FIREBIRD = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
// ROWS 2 TO 3 // ROWS 2 TO 3
sql.append(" ROWS ").append(limitOffset).append(" TO ").append(limitOffset + limitRows); sql.append(" ROWS ").append(limitOffset).append(" TO ").append(limitOffset + limitRows);
@ -113,7 +113,7 @@ public interface LimitOffsetProcesser {
* Oracle11g及以下数据库的处理器 * Oracle11g及以下数据库的处理器
* 适合 {@link DbType#ORACLE,DbType#DM,DbType#GAUSS} * 适合 {@link DbType#ORACLE,DbType#DM,DbType#GAUSS}
*/ */
LimitOffsetProcesser ORACLE = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor ORACLE = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null) { if (limitRows != null) {
if (limitOffset == null) { if (limitOffset == null) {
limitOffset = 0; limitOffset = 0;
@ -130,7 +130,7 @@ public interface LimitOffsetProcesser {
* Sybase 处理器 * Sybase 处理器
* 适合 {@link DbType#SYBASE} * 适合 {@link DbType#SYBASE}
*/ */
LimitOffsetProcesser SYBASE = (sql, queryWrapper, limitRows, limitOffset) -> { LimitOffsetProcessor SYBASE = (sql, queryWrapper, limitRows, limitOffset) -> {
if (limitRows != null && limitOffset != null) { if (limitRows != null && limitOffset != null) {
//SELECT TOP 1 START AT 3 * FROM //SELECT TOP 1 START AT 3 * FROM
sql.insert(6, " TOP " + limitRows + " START AT " + (limitOffset + 1)); sql.insert(6, " TOP " + limitRows + " START AT " + (limitOffset + 1));

View File

@ -18,7 +18,7 @@ package com.mybatisflex.core.dialect.impl;
import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.FlexGlobalConfig;
import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.dialect.KeywordWrap; import com.mybatisflex.core.dialect.KeywordWrap;
import com.mybatisflex.core.dialect.LimitOffsetProcesser; import com.mybatisflex.core.dialect.LimitOffsetProcessor;
import com.mybatisflex.core.exception.FlexExceptions; import com.mybatisflex.core.exception.FlexExceptions;
import com.mybatisflex.core.query.*; import com.mybatisflex.core.query.*;
import com.mybatisflex.core.row.Row; import com.mybatisflex.core.row.Row;
@ -40,18 +40,18 @@ import java.util.StringJoiner;
public class CommonsDialectImpl implements IDialect { public class CommonsDialectImpl implements IDialect {
protected KeywordWrap keywordWrap = KeywordWrap.BACKQUOTE; protected KeywordWrap keywordWrap = KeywordWrap.BACKQUOTE;
private LimitOffsetProcesser limitOffsetProcesser = LimitOffsetProcesser.MYSQL; private LimitOffsetProcessor limitOffsetProcessor = LimitOffsetProcessor.MYSQL;
public CommonsDialectImpl() { public CommonsDialectImpl() {
} }
public CommonsDialectImpl(LimitOffsetProcesser limitOffsetProcesser) { public CommonsDialectImpl(LimitOffsetProcessor limitOffsetProcessor) {
this.limitOffsetProcesser = limitOffsetProcesser; this.limitOffsetProcessor = limitOffsetProcessor;
} }
public CommonsDialectImpl(KeywordWrap keywordWrap, LimitOffsetProcesser limitOffsetProcesser) { public CommonsDialectImpl(KeywordWrap keywordWrap, LimitOffsetProcessor limitOffsetProcessor) {
this.keywordWrap = keywordWrap; this.keywordWrap = keywordWrap;
this.limitOffsetProcesser = limitOffsetProcesser; this.limitOffsetProcessor = limitOffsetProcessor;
} }
@Override @Override
@ -827,7 +827,7 @@ public class CommonsDialectImpl implements IDialect {
* 构建 limit offset 的参数 * 构建 limit offset 的参数
*/ */
protected StringBuilder buildLimitOffsetSql(StringBuilder sqlBuilder, QueryWrapper queryWrapper, Integer limitRows, Integer limitOffset) { protected StringBuilder buildLimitOffsetSql(StringBuilder sqlBuilder, QueryWrapper queryWrapper, Integer limitRows, Integer limitOffset) {
return limitOffsetProcesser.process(sqlBuilder, queryWrapper, limitRows, limitOffset); return limitOffsetProcessor.process(sqlBuilder, queryWrapper, limitRows, limitOffset);
} }

View File

@ -16,7 +16,7 @@
package com.mybatisflex.core.dialect.impl; package com.mybatisflex.core.dialect.impl;
import com.mybatisflex.core.dialect.KeywordWrap; import com.mybatisflex.core.dialect.KeywordWrap;
import com.mybatisflex.core.dialect.LimitOffsetProcesser; import com.mybatisflex.core.dialect.LimitOffsetProcessor;
import com.mybatisflex.core.util.CollectionUtil; import com.mybatisflex.core.util.CollectionUtil;
import com.mybatisflex.core.util.StringUtil; import com.mybatisflex.core.util.StringUtil;
@ -55,8 +55,8 @@ public class OracleDialect extends CommonsDialectImpl {
"VALIDATE", "VALUES", "VARCHAR", "VARCHAR2" "VALIDATE", "VALUES", "VARCHAR", "VARCHAR2"
); );
public OracleDialect(LimitOffsetProcesser limitOffsetProcesser) { public OracleDialect(LimitOffsetProcessor limitOffsetProcessor) {
super(KeywordWrap.NONE, limitOffsetProcesser); super(KeywordWrap.NONE, limitOffsetProcessor);
} }
public boolean isCaseSensitive() { public boolean isCaseSensitive() {

View File

@ -33,8 +33,8 @@ import java.util.List;
public class FlexEnumTypeHandler<E extends Enum<E>> extends BaseTypeHandler<E> { public class FlexEnumTypeHandler<E extends Enum<E>> extends BaseTypeHandler<E> {
private Class<?> enumPropertyType; private final Class<?> enumPropertyType;
private E[] enums; private final E[] enums;
private Field property; private Field property;
private Method getter; private Method getter;

View File

@ -26,7 +26,7 @@ import java.util.Set;
public class ModifyAttrsRecordHandler implements MethodHandler { public class ModifyAttrsRecordHandler implements MethodHandler {
private Set<String> modifyAttrs = new LinkedHashSet<>(); private final Set<String> modifyAttrs = new LinkedHashSet<>();
public Set<String> getModifyAttrs() { public Set<String> getModifyAttrs() {
return modifyAttrs; return modifyAttrs;

View File

@ -24,7 +24,7 @@ import java.util.Arrays;
public class ModifyAttrsRecordProxyFactory { public class ModifyAttrsRecordProxyFactory {
private static ModifyAttrsRecordProxyFactory instance = new ModifyAttrsRecordProxyFactory(); private static final ModifyAttrsRecordProxyFactory instance = new ModifyAttrsRecordProxyFactory();
public static ModifyAttrsRecordProxyFactory getInstance(){ public static ModifyAttrsRecordProxyFactory getInstance(){
return instance; return instance;

View File

@ -30,7 +30,7 @@ import java.util.Map;
*/ */
public class MultiEntityKeyGenerator implements KeyGenerator { public class MultiEntityKeyGenerator implements KeyGenerator {
private KeyGenerator keyGenerator; private final KeyGenerator keyGenerator;
public MultiEntityKeyGenerator(KeyGenerator keyGenerator) { public MultiEntityKeyGenerator(KeyGenerator keyGenerator) {
this.keyGenerator = keyGenerator; this.keyGenerator = keyGenerator;

View File

@ -31,10 +31,10 @@ import java.util.List;
*/ */
public class MultiPrimaryKeyGenerator implements KeyGenerator, IMultiKeyGenerator { public class MultiPrimaryKeyGenerator implements KeyGenerator, IMultiKeyGenerator {
private List<KeyGenerator> keyGenerators; private final List<KeyGenerator> keyGenerators;
//所有自增字段的名称 //所有自增字段的名称
private String[] autoGenKeyColumnNames; private final String[] autoGenKeyColumnNames;
public MultiPrimaryKeyGenerator(MappedStatement mappedStatement, TableInfo tableInfo, List<IdInfo> primaryKeyList) { public MultiPrimaryKeyGenerator(MappedStatement mappedStatement, TableInfo tableInfo, List<IdInfo> primaryKeyList) {
this.keyGenerators = new ArrayList<>(); this.keyGenerators = new ArrayList<>();

View File

@ -31,7 +31,7 @@ import java.util.Map;
*/ */
public class MultiRowKeyGenerator implements KeyGenerator { public class MultiRowKeyGenerator implements KeyGenerator {
private KeyGenerator keyGenerator; private final KeyGenerator keyGenerator;
public MultiRowKeyGenerator(KeyGenerator keyGenerator) { public MultiRowKeyGenerator(KeyGenerator keyGenerator) {
this.keyGenerator = keyGenerator; this.keyGenerator = keyGenerator;

View File

@ -43,7 +43,7 @@ import java.util.Map.Entry;
*/ */
public class RowJdbc3KeyGenerator implements KeyGenerator { public class RowJdbc3KeyGenerator implements KeyGenerator {
private String keyProperty; private final String keyProperty;
private static final String SECOND_GENERIC_PARAM_NAME = ParamNameResolver.GENERIC_NAME_PREFIX + "2"; private static final String SECOND_GENERIC_PARAM_NAME = ParamNameResolver.GENERIC_NAME_PREFIX + "2";

View File

@ -40,9 +40,9 @@ import java.util.Map;
* row 的主键生成器 * row 的主键生成器
*/ */
public class RowKeyGenerator implements KeyGenerator, IMultiKeyGenerator { public class RowKeyGenerator implements KeyGenerator, IMultiKeyGenerator {
private static KeyGenerator[] NO_KEY_GENERATORS = new KeyGenerator[0]; private static final KeyGenerator[] NO_KEY_GENERATORS = new KeyGenerator[0];
private MappedStatement ms; private final MappedStatement ms;
private KeyGenerator[] keyGenerators; private KeyGenerator[] keyGenerators;
private List<String> autoKeyGeneratorNames; private List<String> autoKeyGeneratorNames;

View File

@ -26,21 +26,23 @@ public class MaskManager {
/** /**
* 脱敏处理器type : processer * 脱敏处理器type : processor
*/ */
private static Map<String, MaskProcesser> processerMap = new HashMap<>(); private static final Map<String, MaskProcessor> processorMap = new HashMap<>();
private static final ThreadLocal<Boolean> skipFlags = new ThreadLocal<>();
static { static {
registerMaskProcesser(Masks.MOBILE, Masks.MOBILE_PROCESSER); registerMaskProcessor(Masks.MOBILE, Masks.MOBILE_PROCESSOR);
registerMaskProcesser(Masks.FIXED_PHONE, Masks.FIXED_PHONE_PROCESSER); registerMaskProcessor(Masks.FIXED_PHONE, Masks.FIXED_PHONE_PROCESSOR);
registerMaskProcesser(Masks.ID_CARD_NUMBER, Masks.ID_CARD_NUMBER_PROCESSER); registerMaskProcessor(Masks.ID_CARD_NUMBER, Masks.ID_CARD_NUMBER_PROCESSOR);
registerMaskProcesser(Masks.CHINESE_NAME, Masks.CHINESE_NAME_PROCESSER); registerMaskProcessor(Masks.CHINESE_NAME, Masks.CHINESE_NAME_PROCESSOR);
registerMaskProcesser(Masks.ADDRESS, Masks.ADDRESS_PROCESSER); registerMaskProcessor(Masks.ADDRESS, Masks.ADDRESS_PROCESSOR);
registerMaskProcesser(Masks.EMAIL, Masks.EMAIL_PROCESSER); registerMaskProcessor(Masks.EMAIL, Masks.EMAIL_PROCESSOR);
registerMaskProcesser(Masks.PASSWORD, Masks.PASSWORD_PROCESSER); registerMaskProcessor(Masks.PASSWORD, Masks.PASSWORD_PROCESSOR);
registerMaskProcesser(Masks.CAR_LICENSE, Masks.CAR_LICENSE_PROCESSER); registerMaskProcessor(Masks.CAR_LICENSE, Masks.CAR_LICENSE_PROCESSOR);
registerMaskProcesser(Masks.BANK_CARD_NUMBER, Masks.BANK_CARD_PROCESSER); registerMaskProcessor(Masks.BANK_CARD_NUMBER, Masks.BANK_CARD_PROCESSOR);
} }
@ -48,15 +50,13 @@ public class MaskManager {
* 注册处理器用户可以注册新的脱敏处理器 或者 覆盖内置的处理器 * 注册处理器用户可以注册新的脱敏处理器 或者 覆盖内置的处理器
* *
* @param type 处理器类型 * @param type 处理器类型
* @param processer 脱敏处理器 * @param processor 脱敏处理器
*/ */
public static void registerMaskProcesser(String type, MaskProcesser processer) { public static void registerMaskProcessor(String type, MaskProcessor processor) {
processerMap.put(type, processer); processorMap.put(type, processor);
} }
private static ThreadLocal<Boolean> skipFlags = new ThreadLocal<>();
/** /**
* 跳过脱敏处理 * 跳过脱敏处理
*/ */
@ -91,12 +91,12 @@ public class MaskManager {
return data; return data;
} }
MaskProcesser maskProcesser = processerMap.get(type); MaskProcessor maskProcessor = processorMap.get(type);
if (maskProcesser == null) { if (maskProcessor == null) {
throw new IllegalStateException("Can not get mask processer for by type: " + type); throw new IllegalStateException("Can not get mask processor for by type: " + type);
} }
return maskProcesser.mask(data); return maskProcessor.mask(data);
} }
} }

View File

@ -18,7 +18,7 @@ package com.mybatisflex.core.mask;
/** /**
* 数据脱敏处理器 * 数据脱敏处理器
*/ */
public interface MaskProcesser { public interface MaskProcessor {
Object mask(Object data); Object mask(Object data);
} }

View File

@ -25,7 +25,7 @@ import java.sql.SQLException;
public class MaskTypeHandler extends BaseTypeHandler<Object> { public class MaskTypeHandler extends BaseTypeHandler<Object> {
private String maskType; private final String maskType;
public MaskTypeHandler(String maskType) { public MaskTypeHandler(String maskType) {
this.maskType = maskType; this.maskType = maskType;

View File

@ -86,7 +86,7 @@ public class Masks {
* 手机号脱敏处理器 * 手机号脱敏处理器
* 保留前三后四中间的为星号 "*" * 保留前三后四中间的为星号 "*"
*/ */
static MaskProcesser MOBILE_PROCESSER = data -> { static MaskProcessor MOBILE_PROCESSOR = data -> {
if (data instanceof String && ((String) data).startsWith("1") && ((String) data).length() == 11) { if (data instanceof String && ((String) data).startsWith("1") && ((String) data).length() == 11) {
return mask((String) data, 3, 4, 4); return mask((String) data, 3, 4, 4);
} }
@ -98,7 +98,7 @@ public class Masks {
* 固定电话脱敏 * 固定电话脱敏
* 保留前三后四中间的为星号 "*" * 保留前三后四中间的为星号 "*"
*/ */
static MaskProcesser FIXED_PHONE_PROCESSER = data -> { static MaskProcessor FIXED_PHONE_PROCESSOR = data -> {
if (data instanceof String && ((String) data).length() > 5) { if (data instanceof String && ((String) data).length() > 5) {
return mask((String) data, 3, 2, ((String) data).length() - 5); return mask((String) data, 3, 2, ((String) data).length() - 5);
} }
@ -110,7 +110,7 @@ public class Masks {
* 身份证号脱敏处理器 * 身份证号脱敏处理器
* 身份证号的保留前三后四中间的数为星号 "*" * 身份证号的保留前三后四中间的数为星号 "*"
*/ */
static MaskProcesser ID_CARD_NUMBER_PROCESSER = data -> { static MaskProcessor ID_CARD_NUMBER_PROCESSOR = data -> {
if (data instanceof String && ((String) data).length() >= 15) { if (data instanceof String && ((String) data).length() >= 15) {
return mask((String) data, 3, 4, ((String) data).length() - 7); return mask((String) data, 3, 4, ((String) data).length() - 7);
} }
@ -121,7 +121,7 @@ public class Masks {
/** /**
* 姓名脱敏 * 姓名脱敏
*/ */
static MaskProcesser CHINESE_NAME_PROCESSER = data -> { static MaskProcessor CHINESE_NAME_PROCESSOR = data -> {
if (data instanceof String) { if (data instanceof String) {
String name = (String) data; String name = (String) data;
if (name.length() == 2) { if (name.length() == 2) {
@ -141,7 +141,7 @@ public class Masks {
/** /**
* 地址脱敏 * 地址脱敏
*/ */
static MaskProcesser ADDRESS_PROCESSER = data -> { static MaskProcessor ADDRESS_PROCESSOR = data -> {
if (data instanceof String) { if (data instanceof String) {
String address = (String) data; String address = (String) data;
if (address.length() > 6) { if (address.length() > 6) {
@ -157,7 +157,7 @@ public class Masks {
/** /**
* email 脱敏 * email 脱敏
*/ */
static MaskProcesser EMAIL_PROCESSER = data -> { static MaskProcessor EMAIL_PROCESSOR = data -> {
if (data instanceof String && ((String) data).contains("@")) { if (data instanceof String && ((String) data).contains("@")) {
String fullEmail = (String) data; String fullEmail = (String) data;
int indexOf = fullEmail.lastIndexOf("@"); int indexOf = fullEmail.lastIndexOf("@");
@ -180,7 +180,7 @@ public class Masks {
/** /**
* 密码 脱敏 * 密码 脱敏
*/ */
static MaskProcesser PASSWORD_PROCESSER = data -> { static MaskProcessor PASSWORD_PROCESSOR = data -> {
if (data instanceof String ) { if (data instanceof String ) {
return mask((String) data, 0, 0, ((String) data).length()) ; return mask((String) data, 0, 0, ((String) data).length()) ;
} }
@ -191,7 +191,7 @@ public class Masks {
/** /**
* 车牌号 脱敏 * 车牌号 脱敏
*/ */
static MaskProcesser CAR_LICENSE_PROCESSER = data -> { static MaskProcessor CAR_LICENSE_PROCESSOR = data -> {
if (data instanceof String) { if (data instanceof String) {
return mask((String) data, 3, 1, ((String) data).length() - 4); return mask((String) data, 3, 1, ((String) data).length() - 4);
} }
@ -202,7 +202,7 @@ public class Masks {
/** /**
* 银行卡号 脱敏 * 银行卡号 脱敏
*/ */
static MaskProcesser BANK_CARD_PROCESSER = data -> { static MaskProcessor BANK_CARD_PROCESSOR = data -> {
if (data instanceof String && ((String) data).length() >= 8) { if (data instanceof String && ((String) data).length() >= 8) {
return mask((String) data, 4, 4, 4); return mask((String) data, 4, 4, 4);
} }

View File

@ -25,7 +25,7 @@ import java.util.List;
*/ */
public class Brackets extends QueryCondition { public class Brackets extends QueryCondition {
private QueryCondition childCondition; private final QueryCondition childCondition;
public Brackets(QueryCondition childCondition) { public Brackets(QueryCondition childCondition) {

View File

@ -23,7 +23,7 @@ import java.util.List;
public class DistinctQueryColumn extends QueryColumn { public class DistinctQueryColumn extends QueryColumn {
private List<QueryColumn> queryColumns; private final List<QueryColumn> queryColumns;
public DistinctQueryColumn(QueryColumn... queryColumns) { public DistinctQueryColumn(QueryColumn... queryColumns) {
this.queryColumns = CollectionUtil.newArrayList(queryColumns); this.queryColumns = CollectionUtil.newArrayList(queryColumns);

View File

@ -37,8 +37,8 @@ public class Join implements Serializable {
static final String TYPE_CROSS = " CROSS JOIN "; static final String TYPE_CROSS = " CROSS JOIN ";
private String type; private final String type;
private QueryTable queryTable; private final QueryTable queryTable;
private QueryCondition on; private QueryCondition on;
private boolean effective; private boolean effective;

View File

@ -21,8 +21,8 @@ package com.mybatisflex.core.query;
*/ */
public class Joiner<M> { public class Joiner<M> {
private M queryWrapper; private final M queryWrapper;
private Join join; private final Join join;
public Joiner(M queryWrapper, Join join) { public Joiner(M queryWrapper, Join join) {
this.queryWrapper = queryWrapper; this.queryWrapper = queryWrapper;

View File

@ -26,8 +26,8 @@ import java.util.List;
*/ */
public class OperatorQueryCondition extends QueryCondition { public class OperatorQueryCondition extends QueryCondition {
private String operator; private final String operator;
private QueryCondition child; private final QueryCondition child;
public OperatorQueryCondition(String operator, QueryCondition child) { public OperatorQueryCondition(String operator, QueryCondition child) {
this.operator = operator; this.operator = operator;

View File

@ -27,8 +27,8 @@ import java.util.List;
*/ */
public class OperatorSelectCondition extends QueryCondition { public class OperatorSelectCondition extends QueryCondition {
//操作符例如 exist, not exist //操作符例如 exist, not exist
private String operator; private final String operator;
private QueryWrapper queryWrapper; private final QueryWrapper queryWrapper;
public OperatorSelectCondition(String operator, QueryWrapper queryWrapper) { public OperatorSelectCondition(String operator, QueryWrapper queryWrapper) {
this.operator = operator; this.operator = operator;

View File

@ -30,7 +30,7 @@ public enum SqlConnector {
; ;
private String value; private final String value;
SqlConnector(String value) { SqlConnector(String value) {
this.value = value; this.value = value;

View File

@ -26,7 +26,7 @@ import java.util.List;
*/ */
public class StringQueryOrderBy extends QueryOrderBy { public class StringQueryOrderBy extends QueryOrderBy {
private String orderBy; private final String orderBy;
public StringQueryOrderBy(String orderBy) { public StringQueryOrderBy(String orderBy) {
SqlUtil.keepOrderBySqlSafely(orderBy); SqlUtil.keepOrderBySqlSafely(orderBy);

View File

@ -42,7 +42,7 @@ public class Row extends LinkedHashMap<String, Object> implements ModifyAttrsRec
} }
private Set<String> modifyAttrs = new LinkedHashSet<>(); private final Set<String> modifyAttrs = new LinkedHashSet<>();
@Override @Override
public Set<String> getModifyAttrs() { public Set<String> getModifyAttrs() {

View File

@ -53,8 +53,7 @@ public class RowMapperInvoker {
public int[] insertBatch(String tableName, Collection<Row> rows, int batchSize) { public int[] insertBatch(String tableName, Collection<Row> rows, int batchSize) {
int[] results = new int[rows.size()]; int[] results = new int[rows.size()];
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,true); try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, true)) {
try {
RowMapper mapper = sqlSession.getMapper(RowMapper.class); RowMapper mapper = sqlSession.getMapper(RowMapper.class);
int counter = 0; int counter = 0;
int resultsPos = 0; int resultsPos = 0;
@ -73,7 +72,7 @@ public class RowMapperInvoker {
} }
} }
if (counter != 0){ if (counter != 0) {
List<BatchResult> batchResults = sqlSession.flushStatements(); List<BatchResult> batchResults = sqlSession.flushStatements();
for (BatchResult batchResult : batchResults) { for (BatchResult batchResult : batchResults) {
int[] updateCounts = batchResult.getUpdateCounts(); int[] updateCounts = batchResult.getUpdateCounts();
@ -82,8 +81,6 @@ public class RowMapperInvoker {
} }
} }
} }
} finally {
sqlSession.close();
} }
return results; return results;
} }

View File

@ -43,8 +43,8 @@ public class EntityWrapperFactory implements ObjectWrapperFactory {
static class FlexBeanWrapper extends BeanWrapper { static class FlexBeanWrapper extends BeanWrapper {
private Object entity; private final Object entity;
private TableInfo tableInfo; private final TableInfo tableInfo;
public FlexBeanWrapper(MetaObject metaObject, Object object) { public FlexBeanWrapper(MetaObject metaObject, Object object) {
super(metaObject, object); super(metaObject, object);

View File

@ -21,7 +21,7 @@ import java.io.Serializable;
public class TableDef implements Serializable { public class TableDef implements Serializable {
private String tableName; private final String tableName;
public TableDef(String tableName) { public TableDef(String tableName) {
this.tableName = tableName; this.tableName = tableName;

View File

@ -88,8 +88,8 @@ public class TableInfo {
private List<IdInfo> primaryKeyList; private List<IdInfo> primaryKeyList;
//column java 属性的称的关系映射 //column java 属性的称的关系映射
private Map<String, ColumnInfo> columnInfoMapping = new HashMap<>(); private final Map<String, ColumnInfo> columnInfoMapping = new HashMap<>();
private Map<String, String> propertyColumnMapping = new HashMap<>(); private final Map<String, String> propertyColumnMapping = new HashMap<>();
private List<InsertListener> onInsertListeners; private List<InsertListener> onInsertListeners;
private List<UpdateListener> onUpdateListeners; private List<UpdateListener> onUpdateListeners;
@ -809,7 +809,7 @@ public class TableInfo {
} }
private static Map<Class<?>, List<InsertListener>> insertListenerCache = new ConcurrentHashMap<>(); private static final Map<Class<?>, List<InsertListener>> insertListenerCache = new ConcurrentHashMap<>();
public void invokeOnInsertListener(Object entity) { public void invokeOnInsertListener(Object entity) {
List<InsertListener> listeners = MapUtil.computeIfAbsent(insertListenerCache, entityClass, aClass -> { List<InsertListener> listeners = MapUtil.computeIfAbsent(insertListenerCache, entityClass, aClass -> {
@ -823,7 +823,7 @@ public class TableInfo {
} }
private static Map<Class<?>, List<UpdateListener>> updateListenerCache = new ConcurrentHashMap<>(); private static final Map<Class<?>, List<UpdateListener>> updateListenerCache = new ConcurrentHashMap<>();
public void invokeOnUpdateListener(Object entity) { public void invokeOnUpdateListener(Object entity) {
List<UpdateListener> listeners = MapUtil.computeIfAbsent(updateListenerCache, entityClass, aClass -> { List<UpdateListener> listeners = MapUtil.computeIfAbsent(updateListenerCache, entityClass, aClass -> {
@ -837,7 +837,7 @@ public class TableInfo {
} }
private static Map<Class<?>, List<SetListener>> setListenerCache = new ConcurrentHashMap<>(); private static final Map<Class<?>, List<SetListener>> setListenerCache = new ConcurrentHashMap<>();
public Object invokeOnSetListener(Object entity, String property, Object value) { public Object invokeOnSetListener(Object entity, String property, Object value) {
List<SetListener> listeners = MapUtil.computeIfAbsent(setListenerCache, entityClass, aClass -> { List<SetListener> listeners = MapUtil.computeIfAbsent(setListenerCache, entityClass, aClass -> {

View File

@ -19,7 +19,7 @@ import java.util.function.Supplier;
public class TenantManager { public class TenantManager {
private static ThreadLocal<Boolean> ignoreFlags = new ThreadLocal<>(); private static final ThreadLocal<Boolean> ignoreFlags = new ThreadLocal<>();
private static TenantFactory tenantFactory; private static TenantFactory tenantFactory;

View File

@ -29,7 +29,7 @@ import java.util.List;
public class UpdateEntity { public class UpdateEntity {
private static ReflectorFactory reflectorFactory = new DefaultReflectorFactory(); private static final ReflectorFactory reflectorFactory = new DefaultReflectorFactory();
public static <T> T of(Class<T> clazz) { public static <T> T of(Class<T> clazz) {

View File

@ -3,7 +3,7 @@ package com.mybatisflex.coretest;
import com.mybatisflex.core.dialect.impl.CommonsDialectImpl; import com.mybatisflex.core.dialect.impl.CommonsDialectImpl;
import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.dialect.KeywordWrap; import com.mybatisflex.core.dialect.KeywordWrap;
import com.mybatisflex.core.dialect.LimitOffsetProcesser; import com.mybatisflex.core.dialect.LimitOffsetProcessor;
import com.mybatisflex.core.query.CPI; import com.mybatisflex.core.query.CPI;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.table.TableInfo; import com.mybatisflex.core.table.TableInfo;
@ -49,7 +49,7 @@ public class AccountSqlTester {
.from(ACCOUNT.as("a"), ARTICLE.as("b")) .from(ACCOUNT.as("a"), ARTICLE.as("b"))
.where(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID)); .where(ACCOUNT.ID.eq(ARTICLE.ACCOUNT_ID));
IDialect dialect = new CommonsDialectImpl(KeywordWrap.NONE, LimitOffsetProcesser.MYSQL); IDialect dialect = new CommonsDialectImpl(KeywordWrap.NONE, LimitOffsetProcessor.MYSQL);
String sql = dialect.forSelectListByQuery(query); String sql = dialect.forSelectListByQuery(query);
System.out.println(sql); System.out.println(sql);
} }
@ -321,28 +321,28 @@ public class AccountSqlTester {
String sql1 = dialect1.buildSelectSql(queryWrapper); String sql1 = dialect1.buildSelectSql(queryWrapper);
System.out.println(sql1); System.out.println(sql1);
IDialect dialect2 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE); IDialect dialect2 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.ORACLE);
String sql2 = dialect2.buildSelectSql(queryWrapper); String sql2 = dialect2.buildSelectSql(queryWrapper);
System.out.println(sql2); System.out.println(sql2);
IDialect dialect3 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DB2); IDialect dialect3 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.DB2);
String sql3 = dialect3.buildSelectSql(queryWrapper); String sql3 = dialect3.buildSelectSql(queryWrapper);
System.out.println(sql3); System.out.println(sql3);
IDialect dialect4 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.POSTGRESQL); IDialect dialect4 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.POSTGRESQL);
String sql4 = dialect4.buildSelectSql(queryWrapper); String sql4 = dialect4.buildSelectSql(queryWrapper);
System.out.println(sql4); System.out.println(sql4);
IDialect dialect5 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.INFORMIX); IDialect dialect5 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.INFORMIX);
String sql5 = dialect5.buildSelectSql(queryWrapper); String sql5 = dialect5.buildSelectSql(queryWrapper);
System.out.println(sql5); System.out.println(sql5);
IDialect dialect6 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.SYBASE); IDialect dialect6 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.SYBASE);
String sql6 = dialect6.buildSelectSql(queryWrapper); String sql6 = dialect6.buildSelectSql(queryWrapper);
System.out.println(sql6); System.out.println(sql6);
IDialect dialect7 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.FIREBIRD); IDialect dialect7 = new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.FIREBIRD);
String sql7 = dialect7.buildSelectSql(queryWrapper); String sql7 = dialect7.buildSelectSql(queryWrapper);
System.out.println(sql7); System.out.println(sql7);
} }

View File

@ -40,7 +40,7 @@ import java.util.Map;
@AutoConfigureBefore({DataSourceAutoConfiguration.class}) @AutoConfigureBefore({DataSourceAutoConfiguration.class})
public class MultiDataSourceAutoConfiguration { public class MultiDataSourceAutoConfiguration {
private Map<String, Map<String, String>> dataSourceProperties; private final Map<String, Map<String, String>> dataSourceProperties;
public MultiDataSourceAutoConfiguration(MybatisFlexProperties properties) { public MultiDataSourceAutoConfiguration(MybatisFlexProperties properties) {