Interface DatabaseDialect


public interface DatabaseDialect
数据库方言接口。

该接口用于屏蔽不同数据库系统的 SQL 语法差异,提供统一的 SQL 语句生成方法。 通过实现此接口,可以支持 MySQL、PostgreSQL、SQLite、H2 等不同的数据库系统。

Since:
1.0.0
Version:
1.0.0
Author:
Berry_so
  • Method Details

    • translateJavaType

      String translateJavaType(Class<?> javaType, int length)
      将 Java 类型转换为对应数据库的 SQL 类型。
      Parameters:
      javaType - Java 类型的 Class 对象
      length - 字段长度,0 或负数表示使用默认值
      Returns:
      数据库 SQL 类型字符串,如 "VARCHAR(100)", "INT"
    • getLimitSQL

      String getLimitSQL(String originalSQL, int limit, int offset)
      生成带分页限制的 SQL 语句。
      Parameters:
      originalSQL - 原始 SQL 查询语句
      limit - 最大返回记录数
      offset - 跳过的记录数
      Returns:
      添加了分页限制的 SQL 语句
    • getAutoIncrementSQL

      String getAutoIncrementSQL()
      获取自增列的 SQL 定义。
      Returns:
      数据库特定的自增列关键字,如 MySQL 的 "AUTO_INCREMENT"
    • getCreateTableSQL

      String getCreateTableSQL(String tableName, List<ColumnDefinition> columns)
      生成创建表的 SQL 语句。
      Parameters:
      tableName - 表名
      columns - 列定义列表
      Returns:
      完整的 CREATE TABLE SQL 语句
    • getCreateTableWithCompositePrimaryKeySQL

      String getCreateTableWithCompositePrimaryKeySQL(String tableName, List<ColumnDefinition> columns, List<String> primaryKeyColumns)
      生成带复合主键的创建表 SQL 语句。
      Parameters:
      tableName - 表名
      columns - 列定义列表
      primaryKeyColumns - 主键列名列表
      Returns:
      完整的带复合主键的 CREATE TABLE SQL 语句
    • getAlterTableSQL

      String getAlterTableSQL(String tableName, String alterAction)
      生成修改表结构的 SQL 语句。
      Parameters:
      tableName - 表名
      alterAction - 修改操作子句,如 "ADD COLUMN email VARCHAR(100)"
      Returns:
      完整的 ALTER TABLE SQL 语句
    • getCreateIndexSQL

      String getCreateIndexSQL(String indexName, String tableName, List<String> columns, boolean unique)
      生成创建索引的 SQL 语句。
      Parameters:
      indexName - 索引名称
      tableName - 表名
      columns - 索引列名列表
      unique - 是否为唯一索引
      Returns:
      完整的 CREATE INDEX SQL 语句
    • getTableExistsSQL

      String getTableExistsSQL()
      获取检查表是否存在的 SQL 语句。
      Returns:
      用于查询表是否存在的 SQL 语句
    • escapeIdentifier

      String escapeIdentifier(String identifier)
      转义数据库标识符(表名、列名等)。
      Parameters:
      identifier - 需要转义的标识符
      Returns:
      转义后的标识符,如 MySQL 的 `table_name`
    • getBatchInsertSQL

      String getBatchInsertSQL(String tableName, List<String> columns, int batchSize)
      生成批量插入的 SQL 语句。
      Parameters:
      tableName - 表名
      columns - 列名列表
      batchSize - 批量插入的记录数
      Returns:
      批量插入的 SQL 语句,包含多组占位符
    • getTestQuery

      String getTestQuery()
      获取测试数据库连接的查询语句。
      Returns:
      简单的测试查询语句,如 "SELECT 1"
    • getDropTableSQL

      String getDropTableSQL(String tableName)
      生成删除表的 SQL 语句。
      Parameters:
      tableName - 表名
      Returns:
      完整的 DROP TABLE SQL 语句