Interface Dialect

All Known Implementing Classes:
BaseDialect, DB2Dialect, DMDialect, H2Dialect, HSQLDialect, MariaDBDialect, MySQLDialect, OracleDialect, PostgreSQLDialect, SQLiteDialect, SQLServerDialect

public interface Dialect
方言
Author:
Maning
  • Method Details

    • processTemplateParams

      default Object[] processTemplateParams(Template template, Object[] params)
      模板参数处理,个别模板在个别数据库可能存在参数翻转或改变等,使用此方法进行处理
      Parameters:
      template - 模板
      params - 原参数
      Returns:
      处理后参数
    • quote

      String quote(String identifier)
      标识符转义

      标识符固定按 . 解析层级并逐段引用,因此 schema.table、database.schema.table 这类限定名可直接传入。标识符不能为 null 或空串。

      Parameters:
      identifier - 标识符
      Returns:
      转义后标识符
    • setJsonValue

      default void setJsonValue(PreparedStatement ps, int parameterIndex, String jsonValue, Configuration configuration) throws SQLException
      设置json值时实现
      Parameters:
      ps - ps
      parameterIndex - 参数下标
      jsonValue - json值
      configuration - 配置
      Throws:
      SQLException - sql异常
    • template

      default String template(Template template)
      获取模板,可重写
      Parameters:
      template - 模板
      Returns:
      重写后模板
    • translate

      Translation translate(Statement statement)
      将语句翻译为sql
      Parameters:
      statement - 语句,不能为null
      Returns:
      翻译结果,不允许返回null
    • translate

      Translation translate(Segment segment)
      将SQL片段翻译为sql
      Parameters:
      segment - SQL片段,不能为null
      Returns:
      翻译结果,不允许返回null
    • translateCustom

      default Translation translateCustom(Segment segment)
      转译自定义SQL,会在转译最后执行
      Parameters:
      segment - SQL片段,不能为null
      Returns:
      翻译结果,不允许返回null
    • translatePaging

      Translation translatePaging(Integer limit, Integer offset)
      转译分页
      Parameters:
      limit - 限制条数
      offset - 跳过条数
      Returns:
      分页语法
    • requiresOrderByForPaging

      default boolean requiresOrderByForPaging()
      分页是否要求语句必须带ORDER BY

      SQL Server 的 OFFSET ... FETCH 必须配合 ORDER BY,否则语句无法执行。

      Returns:
      是否要求ORDER BY
    • supportsNullsOrdering

      default boolean supportsNullsOrdering()
      是否支持ORDER BY的NULLS FIRST/LAST语法

      MySQL、MariaDB、SQL Server不支持该语法,但它们都把NULL视为最小值, 因此可以改写为CASE WHEN ... IS NULL实现等价排序。

      Returns:
      是否支持
    • supportsSetOperandParenthesis

      default boolean supportsSetOperandParenthesis()
      集合运算(UNION/INTERSECT/EXCEPT)的操作数是否支持用括号包裹

      标准SQL与绝大多数数据库均支持;SQLite不支持括号,其集合运算固定从左到右计算。

      Returns:
      是否支持
    • typeForSetNull

      default JDBCType typeForSetNull()
      ps.setNull时使用的类型
      Returns:
      ps.setNull时使用的类型
    • useNational

      default boolean useNational()
      是否使用unicode字符集, 影响使用ResultSet.getNString(int)还是ResultSet.getString(int)等
      Returns:
      是否使用unicode字符集