diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java index 48e0ae95..5981f1c1 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbType.java @@ -163,6 +163,10 @@ public enum DbType { * Informix */ INFORMIX("informix", "Informix 数据库"), + /** + * sinodb + */ + SINODB("sinodb", "星瑞格数据库"), /** * uxdb */ diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java index a3b01b19..de760598 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DbTypeUtil.java @@ -160,6 +160,8 @@ public class DbTypeUtil { return DbType.TDENGINE; } else if (jdbcUrl.contains(":informix")) { return DbType.INFORMIX; + }else if (jdbcUrl.contains(":sinodb")) { + return DbType.SINODB; } else if (jdbcUrl.contains(":uxdb:")) { return DbType.UXDB; } else if (jdbcUrl.contains(":greenplum:")) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java index f94f21ec..f7578246 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/DialectFactory.java @@ -138,6 +138,8 @@ public class DialectFactory { return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcessor.SQLSERVER_2005); case INFORMIX: return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.INFORMIX); + case SINODB: + return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.SINODB); case SYBASE: return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.SYBASE); default: diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java index 3fd7f017..3140019b 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/LimitOffsetProcessor.java @@ -156,6 +156,21 @@ public interface LimitOffsetProcessor { return sql; }; + + /** + * SINODB 的处理器 + * 适合 {@link DbType#INFORMIX} + */ + LimitOffsetProcessor SINODB = (dialect, sql, queryWrapper, limitRows, limitOffset) -> { + if (limitRows != null && limitOffset != null) { + // SELECT SKIP 2 FIRST 1 * FROM + sql.insert(6, SKIP + limitOffset + FIRST + limitRows); + } else if (limitRows != null) { + sql.insert(6, FIRST + limitRows); + } + return sql; + }; + /** * Firebird 的处理器 * 适合 {@link DbType#FIREBIRD}