跳到主要内容

数据源差异

dbVisitor 力争使用统一的 API 来操作所有 关系型数据库非关系型数据库。但实际中数据源由于其本身的特性仍存在一些个体差异。 dbVisitor 对待差异的处理方式主要体现在两个方面:

  • API 支持性,是指被调用的 API 在某数据源上是否支持。
  • 数据库方言,是指在使用 构造器 API 时相同 API 操不同数据库时采用了不同的命令或语法。
特点

您若想改版这些差异,可以参与项目并贡献您的改进代码。

API 支持性

dbVisitor 在统一内核架构下面向使用而设计的 API 主要分为 4 种,编程式 API声明式 API构造器 APIMapper File

对于以 SQL 语言为依托的 关系型数据库,dbVisitor 提供的所有 API 均可使用。在数据库差异细节点上需参考本文 数据库方言 中的描述。

对于 非关系型数据库 通过下列指引可详细了解其中差异:

JDBC 特性支持

对于非关系型数据库驱动(Mongo、Elastic),dbVisitor 实现了 Statement.RETURN_GENERATED_KEYS 特性。 这意味着在使用 JdbcTemplateStatement 执行插入操作时,可以自动获取生成的 _id

数据库方言

dbVisitor 具备智能的方言推断能力,在创建数据操作接口时,会自动根据 JDBC URL 识别目标数据库类型并配置最佳方言。因此,对于上表中列出的数据库,您通常 无需进行任何手动配置

如果您的应用场景特殊(如:使用了不支持的数据库、中间件代理了 JDBC URL),可以通过配置显式指定方言。指定方言时支持 方言别名(如 mysql)或 方言全限定类名

下面表表格中罗列了 dbVisitor 内置数据库方言对于 构造器 API 的功能支持性差异。

配置 Key数据库分页查询冲突策略空值排序策略序列
db2DB2支持Into
derbyApache Derby支持Into
dm达梦支持Into、Ignore(表要有主键)
h2H2支持Into支持
hiveHive支持Into
hsqlHSQL支持Into
impalaApache Impala支持Into
informixIBM Informix支持Into
kingbase人大金仓支持Into
mariadbMariaDB支持Into
mysqlMySQL支持Into、Update、Ignore支持
oracleOracle支持Into、Update、Ignore(表要有主键)
postgresqlPostgreSQL支持Into、Update、Ignore
sqliteSQLite支持Into
sqlserverSQL SERVER支持Into
xugu虚谷数据库支持Into
mongoMongoDB支持Into
elastic6ElasticSearch 6支持Into
elastic7ElasticSearch 7+支持Into