diff --git a/src/main/java/org/redkale/source/AbstractDataSqlSource.java b/src/main/java/org/redkale/source/AbstractDataSqlSource.java index fde64ea53..995e55c05 100644 --- a/src/main/java/org/redkale/source/AbstractDataSqlSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSqlSource.java @@ -646,7 +646,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement return getSQLAttrValue(info, attr, val); } - protected DataNativeSqlParser.NativeSqlStatement nativeParse(String nativeSql, Map params) { + protected DataNativeSqlStatement nativeParse(String nativeSql, Map params) { if (nativeSqlParser == null) { throw new SourceException("not found DataNativeSqlParser instance"); } diff --git a/src/main/java/org/redkale/source/DataJdbcSource.java b/src/main/java/org/redkale/source/DataJdbcSource.java index 2e948e4dd..73b3e76e5 100644 --- a/src/main/java/org/redkale/source/DataJdbcSource.java +++ b/src/main/java/org/redkale/source/DataJdbcSource.java @@ -18,7 +18,6 @@ import org.redkale.annotation.AutoLoad; import org.redkale.annotation.ResourceListener; import org.redkale.annotation.ResourceType; import org.redkale.service.Local; -import org.redkale.source.DataNativeSqlParser.NativeSqlStatement; import org.redkale.util.*; /** @@ -2555,7 +2554,7 @@ public class DataJdbcSource extends AbstractDataSqlSource { @Local @Override public int nativeUpdate(String sql, Map params) { - NativeSqlStatement sinfo = super.nativeParse(sql, params); + DataNativeSqlStatement sinfo = super.nativeParse(sql, params); final long s = System.currentTimeMillis(); SourceConnection conn = writePool.pollConnection(); Statement stmt = null; @@ -2632,7 +2631,7 @@ public class DataJdbcSource extends AbstractDataSqlSource { @Local @Override public V nativeQuery(String sql, BiConsumer consumer, Function handler, Map params) { - NativeSqlStatement sinfo = super.nativeParse(sql, params); + DataNativeSqlStatement sinfo = super.nativeParse(sql, params); final long s = System.currentTimeMillis(); final SourceConnection conn = readPool.pollConnection(); try { @@ -2678,7 +2677,7 @@ public class DataJdbcSource extends AbstractDataSqlSource { public Sheet nativeQuerySheet(Class type, String sql, Flipper flipper, Map params) { final boolean mysqlOrPgsql = "mysql".equals(dbtype()) || "postgresql".equals(dbtype()); - NativeSqlStatement sinfo = super.nativeParse(sql, params); + DataNativeSqlStatement sinfo = super.nativeParse(sql, params); final long s = System.currentTimeMillis(); final SourceConnection conn = readPool.pollConnection(); try { diff --git a/src/main/java/org/redkale/source/DataNativeSqlParser.java b/src/main/java/org/redkale/source/DataNativeSqlParser.java index 21b5cd11a..3a411fea0 100644 --- a/src/main/java/org/redkale/source/DataNativeSqlParser.java +++ b/src/main/java/org/redkale/source/DataNativeSqlParser.java @@ -5,8 +5,6 @@ package org.redkale.source; import java.util.*; import java.util.function.IntFunction; -import org.redkale.convert.ConvertDisabled; -import org.redkale.convert.json.JsonConvert; import org.redkale.util.RedkaleClassLoader; /** @@ -25,11 +23,11 @@ import org.redkale.util.RedkaleClassLoader; */ public interface DataNativeSqlParser { - NativeSqlStatement parse(IntFunction signFunc, String dbtype, String rawSql, Map params); + DataNativeSqlStatement parse(IntFunction signFunc, String dbtype, String rawSql, Map params); public static DataNativeSqlParser loadFirst() { - if (NativeSqlStatement._first_parser != NativeSqlStatement.PARSER_NIL) { - return NativeSqlStatement._first_parser; + if (DataNativeSqlStatement._first_parser != DataNativeSqlStatement.PARSER_NIL) { + return DataNativeSqlStatement._first_parser; } Iterator it = ServiceLoader.load(DataNativeSqlParserProvider.class).iterator(); RedkaleClassLoader.putServiceLoader(DataNativeSqlParserProvider.class); @@ -39,89 +37,8 @@ public interface DataNativeSqlParser { return provider.createInstance(); } } - NativeSqlStatement._first_parser = null; + DataNativeSqlStatement._first_parser = null; return null; } - public static class NativeSqlStatement { - - private static final DataNativeSqlParser PARSER_NIL = new DataNativeSqlParser() { - @Override - public NativeSqlStatement parse(IntFunction signFunc, String dbtype, String rawSql, Map params) { - throw new UnsupportedOperationException("Not supported yet."); - } - }; - - private static DataNativeSqlParser _first_parser = PARSER_NIL; - - //根据参数值集合重新生成的带?参数可执行的sql - protected String nativeSql; - - //根据参数值集合重新生成的带?参数可执行的计算总数sql,用于返回Sheet对象 - protected String nativeCountSql; - - //需要预编译的$${xxx}、${xxx}参数名, 数量与sql中的?数量一致 - protected List paramNames; - - //需要预编译的jdbc参数名, 数量与sql中的?数量一致 - protected List jdbcNames; - - //jdbc参数值集合, paramNames中的key必然会存在 - protected Map paramValues; - - /** - * 是否带有参数 - * - * @return 是否带有参数 - */ - @ConvertDisabled - public boolean isEmptyNamed() { - return paramNames == null || paramNames.isEmpty(); - } - - public String getNativeSql() { - return nativeSql; - } - - public void setNativeSql(String nativeSql) { - this.nativeSql = nativeSql; - } - - public String getNativeCountSql() { - return nativeCountSql; - } - - public void setNativeCountSql(String nativeCountSql) { - this.nativeCountSql = nativeCountSql; - } - - public List getParamNames() { - return paramNames; - } - - public void setParamNames(List paramNames) { - this.paramNames = paramNames; - } - - public Map getParamValues() { - return paramValues; - } - - public void setParamValues(Map paramValues) { - this.paramValues = paramValues; - } - - public List getJdbcNames() { - return jdbcNames; - } - - public void setJdbcNames(List jdbcNames) { - this.jdbcNames = jdbcNames; - } - - @Override - public String toString() { - return JsonConvert.root().convertTo(this); - } - } } diff --git a/src/main/java/org/redkale/source/DataNativeSqlStatement.java b/src/main/java/org/redkale/source/DataNativeSqlStatement.java new file mode 100644 index 000000000..11d5b1d13 --- /dev/null +++ b/src/main/java/org/redkale/source/DataNativeSqlStatement.java @@ -0,0 +1,102 @@ +/* + * + */ +package org.redkale.source; + +import java.util.List; +import java.util.Map; +import java.util.function.IntFunction; +import org.redkale.convert.ConvertDisabled; +import org.redkale.convert.json.JsonConvert; + +/** + * + * 原生的sql解析对象
+ * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + * @since 2.8.0 + */ +public class DataNativeSqlStatement { + + static final DataNativeSqlParser PARSER_NIL = new DataNativeSqlParser() { + @Override + public DataNativeSqlStatement parse(IntFunction signFunc, String dbtype, String rawSql, Map params) { + throw new UnsupportedOperationException("Not supported yet."); + } + }; + + static DataNativeSqlParser _first_parser = PARSER_NIL; + + //根据参数值集合重新生成的带?参数可执行的sql + protected String nativeSql; + + //根据参数值集合重新生成的带?参数可执行的计算总数sql,用于返回Sheet对象 + protected String nativeCountSql; + + //需要预编译的$${xxx}、${xxx}参数名, 数量与sql中的?数量一致 + protected List paramNames; + + //需要预编译的jdbc参数名, 数量与sql中的?数量一致 + protected List jdbcNames; + + //jdbc参数值集合, paramNames中的key必然会存在 + protected Map paramValues; + + /** + * 是否带有参数 + * + * @return 是否带有参数 + */ + @ConvertDisabled + public boolean isEmptyNamed() { + return paramNames == null || paramNames.isEmpty(); + } + + public String getNativeSql() { + return nativeSql; + } + + public void setNativeSql(String nativeSql) { + this.nativeSql = nativeSql; + } + + public String getNativeCountSql() { + return nativeCountSql; + } + + public void setNativeCountSql(String nativeCountSql) { + this.nativeCountSql = nativeCountSql; + } + + public List getParamNames() { + return paramNames; + } + + public void setParamNames(List paramNames) { + this.paramNames = paramNames; + } + + public Map getParamValues() { + return paramValues; + } + + public void setParamValues(Map paramValues) { + this.paramValues = paramValues; + } + + public List getJdbcNames() { + return jdbcNames; + } + + public void setJdbcNames(List jdbcNames) { + this.jdbcNames = jdbcNames; + } + + @Override + public String toString() { + return JsonConvert.root().convertTo(this); + } +}