Compare commits

..

2 Commits

Author SHA1 Message Date
Looly
4d0074e6a6 fix code 2025-08-18 10:26:27 +08:00
Looly
707daa94f7 增加Gbase8s驱动支持 2025-08-18 10:23:52 +08:00
11 changed files with 34 additions and 5 deletions

View File

@ -24,6 +24,7 @@ import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import cn.hutool.v7.db.sql.StatementUtil; import cn.hutool.v7.db.sql.StatementUtil;
import java.io.Serial;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.util.Arrays; import java.util.Arrays;
@ -35,6 +36,7 @@ import java.util.List;
* @author wb04307201 * @author wb04307201
*/ */
public class DmDialect extends AnsiSqlDialect { public class DmDialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 3415348435502927423L; private static final long serialVersionUID = 3415348435502927423L;
/** /**
@ -78,7 +80,7 @@ public class DmDialect extends AnsiSqlDialect {
// 构建字段部分和参数占位符部分 // 构建字段部分和参数占位符部分
entity.forEach((field, value) -> { entity.forEach((field, value) -> {
if (StrUtil.isNotBlank(field) && keyList.contains(field)) { if (StrUtil.isNotBlank(field) && keyList.contains(field)) {
if (keyFieldsPart.length() > 0) { if (!keyFieldsPart.isEmpty()) {
keyFieldsPart.append(" and "); keyFieldsPart.append(" and ");
} }
keyFieldsPart.append(field).append("= ?"); keyFieldsPart.append(field).append("= ?");
@ -88,7 +90,7 @@ public class DmDialect extends AnsiSqlDialect {
entity.forEach((field, value) -> { entity.forEach((field, value) -> {
if (StrUtil.isNotBlank(field) && !keyList.contains(field)) { if (StrUtil.isNotBlank(field) && !keyList.contains(field)) {
if (updateFieldsPart.length() > 0) { if (!updateFieldsPart.isEmpty()) {
// 非第一个参数追加逗号 // 非第一个参数追加逗号
updateFieldsPart.append(", "); updateFieldsPart.append(", ");
} }
@ -99,7 +101,7 @@ public class DmDialect extends AnsiSqlDialect {
entity.forEach((field, value) -> { entity.forEach((field, value) -> {
if (StrUtil.isNotBlank(field)) { if (StrUtil.isNotBlank(field)) {
if (insertFieldsPart.length() > 0) { if (!insertFieldsPart.isEmpty()) {
// 非第一个参数追加逗号 // 非第一个参数追加逗号
insertFieldsPart.append(", "); insertFieldsPart.append(", ");
insertPlaceHolder.append(", "); insertPlaceHolder.append(", ");

View File

@ -26,6 +26,7 @@ import cn.hutool.v7.db.config.DbConfig;
import cn.hutool.v7.db.dialect.DialectName; import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import java.io.Serial;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -35,6 +36,7 @@ import java.sql.PreparedStatement;
* @author loolly * @author loolly
*/ */
public class H2Dialect extends AnsiSqlDialect { public class H2Dialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 1490520247974768214L; private static final long serialVersionUID = 1490520247974768214L;
/** /**
@ -70,7 +72,7 @@ public class H2Dialect extends AnsiSqlDialect {
// 构建字段部分和参数占位符部分 // 构建字段部分和参数占位符部分
entity.forEach((field, value) -> { entity.forEach((field, value) -> {
if (StrUtil.isNotBlank(field)) { if (StrUtil.isNotBlank(field)) {
if (fieldsPart.length() > 0) { if (!fieldsPart.isEmpty()) {
// 非第一个参数追加逗号 // 非第一个参数追加逗号
fieldsPart.append(", "); fieldsPart.append(", ");
placeHolder.append(", "); placeHolder.append(", ");

View File

@ -25,6 +25,7 @@ import cn.hutool.v7.db.sql.QuoteWrapper;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import cn.hutool.v7.db.sql.StatementUtil; import cn.hutool.v7.db.sql.StatementUtil;
import java.io.Serial;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,6 +38,7 @@ import java.util.List;
* @author daoyou.dev * @author daoyou.dev
*/ */
public class HanaDialect extends AnsiSqlDialect { public class HanaDialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**

View File

@ -23,12 +23,15 @@ import cn.hutool.v7.db.config.DbConfig;
import cn.hutool.v7.db.dialect.DialectName; import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import java.io.Serial;
/** /**
* Oracle 方言 * Oracle 方言
* *
* @author loolly * @author loolly
*/ */
public class OracleDialect extends AnsiSqlDialect { public class OracleDialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 6122761762247483015L; private static final long serialVersionUID = 6122761762247483015L;
private static final String DEFAULT_TABLE_ALIAS = "table_alias_"; private static final String DEFAULT_TABLE_ALIAS = "table_alias_";

View File

@ -22,6 +22,7 @@ import cn.hutool.v7.db.config.DbConfig;
import cn.hutool.v7.db.dialect.DialectName; import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.Query; import cn.hutool.v7.db.sql.Query;
import java.io.Serial;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -32,6 +33,7 @@ import java.sql.PreparedStatement;
* @since 5.7.2 * @since 5.7.2
*/ */
public class PhoenixDialect extends AnsiSqlDialect { public class PhoenixDialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**

View File

@ -27,6 +27,7 @@ import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.QuoteWrapper; import cn.hutool.v7.db.sql.QuoteWrapper;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import java.io.Serial;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -37,6 +38,7 @@ import java.sql.PreparedStatement;
* @author loolly * @author loolly
*/ */
public class PostgresqlDialect extends AnsiSqlDialect { public class PostgresqlDialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 3889210427543389642L; private static final long serialVersionUID = 3889210427543389642L;
/** /**
@ -66,7 +68,7 @@ public class PostgresqlDialect extends AnsiSqlDialect {
// 构建字段部分和参数占位符部分 // 构建字段部分和参数占位符部分
entity.forEach((field, value) -> { entity.forEach((field, value) -> {
if (StrUtil.isNotBlank(field)) { if (StrUtil.isNotBlank(field)) {
if (fieldsPart.length() > 0) { if (!fieldsPart.isEmpty()) {
// 非第一个参数追加逗号 // 非第一个参数追加逗号
fieldsPart.append(", "); fieldsPart.append(", ");
placeHolder.append(", "); placeHolder.append(", ");

View File

@ -24,6 +24,8 @@ import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.QuoteWrapper; import cn.hutool.v7.db.sql.QuoteWrapper;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import java.io.Serial;
/** /**
* SQLServer2005-2008方言实现<br> * SQLServer2005-2008方言实现<br>
* 参考jdbc-plus * 参考jdbc-plus
@ -31,6 +33,7 @@ import cn.hutool.v7.db.sql.SqlBuilder;
* @author niliwei, Looly * @author niliwei, Looly
*/ */
public class SqlServer2005Dialect extends AnsiSqlDialect { public class SqlServer2005Dialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final String DEFAULT_TABLE_ALIAS = "table_alias_"; private static final String DEFAULT_TABLE_ALIAS = "table_alias_";

View File

@ -23,12 +23,15 @@ import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.SqlBuilder; import cn.hutool.v7.db.sql.SqlBuilder;
import cn.hutool.v7.db.sql.QuoteWrapper; import cn.hutool.v7.db.sql.QuoteWrapper;
import java.io.Serial;
/** /**
* SQLServer2012 方言 * SQLServer2012 方言
* *
* @author Looly * @author Looly
*/ */
public class SqlServer2012Dialect extends AnsiSqlDialect { public class SqlServer2012Dialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = -37598166015777797L; private static final long serialVersionUID = -37598166015777797L;
/** /**

View File

@ -20,12 +20,15 @@ import cn.hutool.v7.db.config.DbConfig;
import cn.hutool.v7.db.dialect.DialectName; import cn.hutool.v7.db.dialect.DialectName;
import cn.hutool.v7.db.sql.QuoteWrapper; import cn.hutool.v7.db.sql.QuoteWrapper;
import java.io.Serial;
/** /**
* SqlLite3方言 * SqlLite3方言
* *
* @author Looly * @author Looly
*/ */
public class Sqlite3Dialect extends AnsiSqlDialect { public class Sqlite3Dialect extends AnsiSqlDialect {
@Serial
private static final long serialVersionUID = -3527642408849291634L; private static final long serialVersionUID = -3527642408849291634L;
/** /**

View File

@ -108,6 +108,8 @@ public class DriverIdentifier implements DriverNames {
new StartsWithDriverMatcher(DRIVER_KINGBASE8, "jdbc:kingbase8:"), new StartsWithDriverMatcher(DRIVER_KINGBASE8, "jdbc:kingbase8:"),
// 南大通用 // 南大通用
new StartsWithDriverMatcher(DRIVER_GBASE, "jdbc:gbase:"), new StartsWithDriverMatcher(DRIVER_GBASE, "jdbc:gbase:"),
// 南大通用8s
new StartsWithDriverMatcher(DRIVER_GBASE8S, "jdbc:gbasedbt-sqli:"),
// 虚谷 // 虚谷
new StartsWithDriverMatcher(DRIVER_XUGU, "jdbc:xugu:"), new StartsWithDriverMatcher(DRIVER_XUGU, "jdbc:xugu:"),
// 神通 // 神通

View File

@ -128,6 +128,11 @@ public interface DriverNames {
* JDBC 驱动 南大通用 * JDBC 驱动 南大通用
*/ */
String DRIVER_GBASE = "com.gbase.jdbc.Driver"; String DRIVER_GBASE = "com.gbase.jdbc.Driver";
/**
* JDBC 驱动 南大通用8S<br>
* https://www.gbase.cn/community/post/4029
*/
String DRIVER_GBASE8S = "com.gbasedbt.jdbc.Driver";
/** /**
* JDBC 驱动 神州数据库 * JDBC 驱动 神州数据库
*/ */