选择驱动或 ORM
TiDB 高度兼容 MySQL 协议,但部分功能与 MySQL 不兼容。完整的兼容性差异列表请参见 MySQL 兼容性。
Java
本节介绍如何在 Java 中使用驱动和 ORM 框架。
Java 驱动
支持级别:Full
你可以按照 MySQL 官方文档 下载并配置 Java JDBC 驱动。推荐在 TiDB v6.3.0 或更高版本中使用最新的 GA 版本 MySQL Connector/J。
关于如何构建完整应用的示例,请参见 使用 TiDB 和 JDBC 构建简单 CRUD 应用。
支持级别:Full
TiDB-JDBC 是基于 MySQL 8.0.29 定制的 Java 驱动。TiDB-JDBC 基于 MySQL 官方 8.0.29 版本编译,修复了原 JDBC 在 prepare 模式下多参数多字段 EOF 的 bug,并增加了 TiCDC 快照自动维护、SM3 认证插件等功能。
基于 SM3 的认证仅在 TiDB 的 TiDB-JDBC 中支持。
如果你使用 Maven,请在 pom.xml 文件的 <dependencies></dependencies> 部分添加以下内容:
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29-tidb-1.0.2</version>
</dependency>
如果你需要启用 SM3 认证,请在 pom.xml 文件的 <dependencies></dependencies> 部分添加以下内容:
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29-tidb-1.0.2</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.67</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.67</version>
</dependency>
如果你使用 Gradle,请在 dependencies 中添加以下内容:
implementation group: 'io.github.lastincisor', name: 'mysql-connector-java', version: '8.0.29-tidb-1.0.2'
implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.67'
implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.67'
Java ORM 框架
支持级别:Full
为避免手动管理应用中不同依赖之间的复杂关系,你可以使用 Gradle 或 Maven 获取应用的所有依赖(包括间接依赖)。注意,只有 Hibernate 6.0.0.Beta2 及以上版本支持 TiDB 方言。
如果你使用 Maven,请在 <dependencies></dependencies> 中添加以下内容:
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.2.3.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
如果你使用 Gradle,请在 dependencies 中添加以下内容:
implementation 'org.hibernate:hibernate-core:6.2.3.Final'
implementation 'mysql:mysql-connector-java:8.0.33'
- 关于如何使用 Hibernate 通过原生 Java 构建 TiDB 应用的示例,请参见 使用 TiDB 和 Hibernate 构建简单 CRUD 应用。
- 关于如何使用 Spring Data JPA 或 Hibernate 通过 Spring 构建 TiDB 应用的示例,请参见 使用 Spring Boot 构建 TiDB 应用。
此外,你需要在 Hibernate 配置文件 中指定 TiDB 方言:org.hibernate.dialect.TiDBDialect,该方言仅在 Hibernate 6.0.0.Beta2 及以上版本支持。如果你的 Hibernate 版本早于 6.0.0.Beta2,请先升级。
支持级别:Full
为避免手动管理应用中不同依赖之间的复杂关系,你可以使用 Gradle 或 Maven 获取应用的所有依赖(包括间接依赖)。
如果你使用 Maven,请在 <dependencies></dependencies> 中添加以下内容:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
如果你使用 Gradle,请在 dependencies 中添加以下内容:
implementation 'org.mybatis:mybatis:3.5.13'
implementation 'mysql:mysql-connector-java:8.0.33'
关于如何使用 MyBatis 构建 TiDB 应用的示例,请参见 使用 TiDB 和 MyBatis 构建简单 CRUD 应用。
Java 客户端负载均衡
tidb-loadbalance
支持级别:Full
tidb-loadbalance 是应用侧的负载均衡组件。通过 tidb-loadbalance,你可以自动维护 TiDB server 节点信息,并在客户端使用 tidb-loadbalance 策略分配 JDBC 连接。客户端应用与 TiDB server 之间直接使用 JDBC 连接的性能高于使用负载均衡组件。
目前,tidb-loadbalance 支持以下策略:roundrobin、random 和 weight。
如果你使用 Maven,请在 pom.xml 文件的 <dependencies></dependencies> 元素体中添加以下内容:
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29-tidb-1.0.2</version>
</dependency>
<dependency>
<groupId>io.github.lastincisor</groupId>
<artifactId>tidb-loadbalance</artifactId>
<version>0.0.5</version>
</dependency>
如果你使用 Gradle,请在 dependencies 中添加以下内容:
implementation group: 'io.github.lastincisor', name: 'mysql-connector-java', version: '8.0.29-tidb-1.0.2'
implementation group: 'io.github.lastincisor', name: 'tidb-loadbalance', version: '0.0.5'
Golang
本节介绍如何在 Golang 中使用驱动和 ORM 框架。
Golang 驱动
go-sql-driver/mysql
支持级别:Full
关于如何下载和配置 Golang 驱动,请参考 go-sql-driver/mysql 文档。
关于如何构建完整应用的示例,请参见 使用 Go-MySQL-Driver 连接 TiDB。
Golang ORM 框架
GORM
支持级别:Full
GORM 是 Golang 中流行的 ORM 框架。你可以使用 go get 命令获取应用的所有依赖。
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
关于如何使用 GORM 构建 TiDB 应用的示例,请参见 使用 GORM 连接 TiDB。
Python
本节介绍如何在 Python 中使用驱动和 ORM 框架。
Python 驱动
支持级别:Compatible
你可以按照 PyMySQL 文档 下载并配置驱动。推荐使用 PyMySQL 1.0.2 或更高版本。
关于如何使用 PyMySQL 构建 TiDB 应用的示例,请参见 使用 PyMySQL 连接 TiDB。
支持级别:Compatible
你可以按照 mysqlclient 文档 下载并配置驱动。推荐使用 mysqlclient 2.1.1 或更高版本。
关于如何使用 mysqlclient 构建 TiDB 应用的示例,请参见 使用 mysqlclient 连接 TiDB。
支持级别:Compatible
你可以按照 MySQL Connector/Python 文档 下载并配置驱动。推荐使用 Connector/Python 8.0.31 或更高版本。
关于如何使用 MySQL Connector/Python 构建 TiDB 应用的示例,请参见 使用 MySQL Connector/Python 连接 TiDB。
Python ORM 框架
支持级别:Full
Django 是流行的 Python Web 框架。为解决 TiDB 与 Django 的兼容性问题,PingCAP 提供了 TiDB 方言 django-tidb。安装方法请参见 django-tidb 文档。
关于如何使用 Django 构建 TiDB 应用的示例,请参见 使用 Django 连接 TiDB。
支持级别:Full
SQLAlchemy 是 Python 中流行的 ORM 框架。你可以使用 pip install SQLAlchemy==1.4.44 命令获取应用的所有依赖。推荐使用 SQLAlchemy 1.4.44 或更高版本。
关于如何使用 SQLAlchemy 构建 TiDB 应用的示例,请参见 使用 SQLAlchemy 连接 TiDB。
支持级别:Compatible
peewee 是 Python 中流行的 ORM 框架。你可以使用 pip install peewee==3.15.4 命令获取应用的所有依赖。推荐使用 peewee 3.15.4 或更高版本。
关于如何使用 peewee 构建 TiDB 应用的示例,请参见 使用 peewee 连接 TiDB。
在你确定了驱动或 ORM 之后,可以 连接到你的 TiDB 集群。