优化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);
}
protected DataNativeSqlStatement nativeParse(String nativeSql, Map<String, Object> params) {
protected DataNativeSqlStatement nativeParse(String nativeSql, boolean countable, Map<String, Object> params) {
if (nativeSqlParser == null) {
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
@@ -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> 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);

View File

@@ -2502,7 +2502,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
@Local
@Override
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();
JdbcConnection conn = writePool.pollConnection();
Statement stmt = null;
@@ -2575,7 +2575,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
@Local
@Override
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 JdbcConnection conn = readPool.pollConnection();
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) {
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 JdbcConnection conn = readPool.pollConnection();
try {

View File

@@ -24,9 +24,10 @@ import org.redkale.util.RedkaleClassLoader;
*/
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() {
if (DataNativeSqlStatement._first_parser != DataNativeSqlStatement.PARSER_NIL) {

View File

@@ -24,12 +24,13 @@ public class DataNativeSqlStatement {
static final DataNativeSqlParser PARSER_NIL = new DataNativeSqlParser() {
@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.");
}
@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.");
}