From 1637e5d4aee73bd7e06ee373a77f21177a225907 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 19 Dec 2023 22:22:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPostgreSQL=E4=BD=BF=E7=94=A8u?= =?UTF-8?q?psert=E5=AD=97=E6=AE=B5=E5=A4=A7=E5=B0=8F=E5=86=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/dialect/impl/PostgresqlDialect.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/PostgresqlDialect.java b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/PostgresqlDialect.java index 7da961730..9082f8de0 100644 --- a/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/PostgresqlDialect.java +++ b/hutool-db/src/main/java/org/dromara/hutool/db/dialect/impl/PostgresqlDialect.java @@ -14,6 +14,7 @@ package org.dromara.hutool.db.dialect.impl; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.array.ArrayUtil; +import org.dromara.hutool.core.text.CharUtil; import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.db.Entity; import org.dromara.hutool.db.StatementUtil; @@ -28,14 +29,17 @@ import java.sql.SQLException; /** * Postgree方言 - * @author loolly * + * @author loolly */ -public class PostgresqlDialect extends AnsiSqlDialect{ +public class PostgresqlDialect extends AnsiSqlDialect { private static final long serialVersionUID = 3889210427543389642L; + /** + * 构造 + */ public PostgresqlDialect() { - quoteWrapper = new QuoteWrapper('"'); + quoteWrapper = new QuoteWrapper(CharUtil.DOUBLE_QUOTES); } @Override @@ -54,7 +58,7 @@ public class PostgresqlDialect extends AnsiSqlDialect{ final StringBuilder updateHolder = new StringBuilder(); // 构建字段部分和参数占位符部分 - entity.forEach((field, value)->{ + entity.forEach((field, value) -> { if (StrUtil.isNotBlank(field)) { if (fieldsPart.length() > 0) { // 非第一个参数,追加逗号 @@ -65,7 +69,7 @@ public class PostgresqlDialect extends AnsiSqlDialect{ final String wrapedField = (null != quoteWrapper) ? quoteWrapper.wrap(field) : field; fieldsPart.append(wrapedField); - updateHolder.append(wrapedField).append("=EXCLUDED.").append(field); + updateHolder.append(wrapedField).append("=EXCLUDED.").append(wrapedField); placeHolder.append("?"); builder.addParams(value); } @@ -76,14 +80,14 @@ public class PostgresqlDialect extends AnsiSqlDialect{ tableName = this.quoteWrapper.wrap(tableName); } builder.append("INSERT INTO ").append(tableName) - // 字段列表 - .append(" (").append(fieldsPart) - // 更新值列表 - .append(") VALUES (").append(placeHolder) - // 定义检查冲突的主键或字段 - .append(") ON CONFLICT (").append(ArrayUtil.join(keys,", ")) - // 主键冲突后的更新操作 - .append(") DO UPDATE SET ").append(updateHolder); + // 字段列表 + .append(" (").append(fieldsPart) + // 更新值列表 + .append(") VALUES (").append(placeHolder) + // 定义检查冲突的主键或字段 + .append(") ON CONFLICT (").append(ArrayUtil.join(keys, ", ")) + // 主键冲突后的更新操作 + .append(") DO UPDATE SET ").append(updateHolder); return StatementUtil.prepareStatement(conn, builder); }