diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/Dialect.java b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/Dialect.java
index 285f37847..7c0a0ebec 100644
--- a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/Dialect.java
+++ b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/Dialect.java
@@ -37,6 +37,14 @@ import java.sql.PreparedStatement;
*/
public interface Dialect extends Serializable {
+ /**
+ * 方言名
+ *
+ * @return 方言名
+ * @since 5.5.3
+ */
+ String dialectName();
+
/**
* @return 包装器
*/
@@ -99,6 +107,19 @@ public interface Dialect extends Serializable {
*/
PreparedStatement psForUpdate(Connection conn, Entity entity, Query query) throws DbException;
+ /**
+ * 构建用于upsert的{@link PreparedStatement}
+ * 方言实现需实现此默认方法,如果没有实现,抛出{@link DbException}
+ *
+ * @param conn 数据库连接对象
+ * @param entity 数据实体类(包含表名)
+ * @param keys 查找字段,某些数据库此字段必须,如H2,某些数据库无需此字段,如MySQL(通过主键)
+ * @return PreparedStatement
+ * @throws DbException SQL执行异常,或方言数据不支持此操作
+ * @since 5.7.20
+ */
+ PreparedStatement psForUpsert(final Connection conn, final Entity entity, final String... keys) throws DbException;
+
// -------------------------------------------- Query
/**
@@ -173,28 +194,4 @@ public interface Dialect extends Serializable {
.append(") hutool_alias_count_");
return psForPage(conn, sqlBuilder, null);
}
-
- /**
- * 构建用于upsert的{@link PreparedStatement}
- * 方言实现需实现此默认方法,如果没有实现,抛出{@link DbException}
- *
- * @param conn 数据库连接对象
- * @param entity 数据实体类(包含表名)
- * @param keys 查找字段,某些数据库此字段必须,如H2,某些数据库无需此字段,如MySQL(通过主键)
- * @return PreparedStatement
- * @throws DbException SQL执行异常,或方言数据不支持此操作
- * @since 5.7.20
- */
- default PreparedStatement psForUpsert(final Connection conn, final Entity entity, final String... keys) throws DbException {
- throw new DbException("Unsupported upsert operation of " + dialectName());
- }
-
-
- /**
- * 方言名
- *
- * @return 方言名
- * @since 5.5.3
- */
- String dialectName();
}
diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/AnsiSqlDialect.java b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/AnsiSqlDialect.java
index 99733c485..c263dc1be 100644
--- a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/AnsiSqlDialect.java
+++ b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/AnsiSqlDialect.java
@@ -108,6 +108,11 @@ public class AnsiSqlDialect implements Dialect {
return StatementUtil.prepareStatement(false, this.dbConfig, conn, update.build(), update.getParamValueArray());
}
+ @Override
+ public PreparedStatement psForUpsert(final Connection conn, final Entity entity, final String... keys) throws DbException {
+ throw new DbException("Unsupported upsert operation of " + dialectName());
+ }
+
@Override
public PreparedStatement psForFind(final Connection conn, final Query query) {
return psForPage(conn, query);