优化DataNativeJsqlParser

This commit is contained in:
redkale
2024-05-24 08:00:27 +08:00
parent 3331723aea
commit 0f0c4eac6e
4 changed files with 13 additions and 10 deletions

View File

@@ -651,11 +651,11 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
return getSQLAttrValue(info, attr, val); return getSQLAttrValue(info, attr, val);
} }
protected DataNativeSqlStatement nativeParse(String nativeSql, Map<String, Object> params) { protected DataNativeSqlStatement nativeParse(String nativeSql, boolean countable, Map<String, Object> params) {
if (nativeSqlParser == null) { if (nativeSqlParser == null) {
throw new SourceException("not found DataNativeSqlParser instance"); throw new SourceException("not found DataNativeSqlParser instance");
} }
return nativeSqlParser.parse(signFunc, dbtype(), nativeSql, params == null ? Collections.emptyMap() : params); return nativeSqlParser.parse(signFunc, dbtype(), nativeSql, countable, params == null ? Collections.emptyMap() : params);
} }
@ConvertDisabled @ConvertDisabled
@@ -695,7 +695,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
protected abstract <T> CompletableFuture<Integer> insertDBAsync(final EntityInfo<T> info, T... entitys); protected abstract <T> CompletableFuture<Integer> insertDBAsync(final EntityInfo<T> info, T... entitys);
//删除记录 //删除记录
protected abstract <T> CompletableFuture<Integer> deleteDBAsync(final EntityInfo<T> info, String[] tables, Flipper flipper, FilterNode node, Map<String, List<Serializable>> pkmap, final String... sqls); protected abstract <T> CompletableFuture<Integer> deleteDBAsync(final EntityInfo<T> info,
String[] tables, Flipper flipper, FilterNode node, Map<String, List<Serializable>> pkmap, final String... sqls);
//清空表 //清空表
protected abstract <T> CompletableFuture<Integer> clearTableDBAsync(final EntityInfo<T> info, String[] tables, FilterNode node, final String... sqls); protected abstract <T> CompletableFuture<Integer> clearTableDBAsync(final EntityInfo<T> info, String[] tables, FilterNode node, final String... sqls);

View File

@@ -2502,7 +2502,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
@Local @Local
@Override @Override
public int nativeUpdate(String sql, Map<String, Object> params) { public int nativeUpdate(String sql, Map<String, Object> params) {
DataNativeSqlStatement sinfo = super.nativeParse(sql, params); DataNativeSqlStatement sinfo = super.nativeParse(sql, false, params);
final long s = System.currentTimeMillis(); final long s = System.currentTimeMillis();
JdbcConnection conn = writePool.pollConnection(); JdbcConnection conn = writePool.pollConnection();
Statement stmt = null; Statement stmt = null;
@@ -2575,7 +2575,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
@Local @Local
@Override @Override
public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler, Map<String, Object> params) { public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler, Map<String, Object> params) {
DataNativeSqlStatement sinfo = super.nativeParse(sql, params); DataNativeSqlStatement sinfo = super.nativeParse(sql, false, params);
final long s = System.currentTimeMillis(); final long s = System.currentTimeMillis();
final JdbcConnection conn = readPool.pollConnection(); final JdbcConnection conn = readPool.pollConnection();
try { try {
@@ -2619,7 +2619,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public <V> Sheet<V> nativeQuerySheet(Class<V> type, String sql, Flipper flipper, Map<String, Object> params) { public <V> Sheet<V> nativeQuerySheet(Class<V> type, String sql, Flipper flipper, Map<String, Object> params) {
final boolean mysqlOrPgsql = "mysql".equals(dbtype()) || "postgresql".equals(dbtype()); final boolean mysqlOrPgsql = "mysql".equals(dbtype()) || "postgresql".equals(dbtype());
DataNativeSqlStatement sinfo = super.nativeParse(sql, params); DataNativeSqlStatement sinfo = super.nativeParse(sql, true, params);
final long s = System.currentTimeMillis(); final long s = System.currentTimeMillis();
final JdbcConnection conn = readPool.pollConnection(); final JdbcConnection conn = readPool.pollConnection();
try { try {

View File

@@ -24,9 +24,10 @@ import org.redkale.util.RedkaleClassLoader;
*/ */
public interface DataNativeSqlParser { public interface DataNativeSqlParser {
public DataNativeSqlInfo parse(IntFunction<String> signFunc, String dbtype, String rawSql); public DataNativeSqlInfo parse(IntFunction<String> signFunc, String dbType, String rawSql);
public DataNativeSqlStatement parse(IntFunction<String> signFunc, String dbtype, String rawSql, Map<String, Object> params); public DataNativeSqlStatement parse(IntFunction<String> signFunc, String dbType,
String rawSql, boolean countable, Map<String, Object> params);
public static DataNativeSqlParser loadFirst() { public static DataNativeSqlParser loadFirst() {
if (DataNativeSqlStatement._first_parser != DataNativeSqlStatement.PARSER_NIL) { if (DataNativeSqlStatement._first_parser != DataNativeSqlStatement.PARSER_NIL) {

View File

@@ -24,12 +24,13 @@ public class DataNativeSqlStatement {
static final DataNativeSqlParser PARSER_NIL = new DataNativeSqlParser() { static final DataNativeSqlParser PARSER_NIL = new DataNativeSqlParser() {
@Override @Override
public DataNativeSqlInfo parse(IntFunction<String> signFunc, String dbtype, String rawSql) { public DataNativeSqlInfo parse(IntFunction<String> signFunc, String dbType, String rawSql) {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
@Override @Override
public DataNativeSqlStatement parse(IntFunction<String> signFunc, String dbtype, String rawSql, Map<String, Object> params) { public DataNativeSqlStatement parse(IntFunction<String> signFunc, String dbType,
String rawSql, boolean countable, Map<String, Object> params) {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }