---
title: "使用 TypeORM 连接 OceanBase 数据库 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: 使用 TypeORM 连接 OceanBase 数据库 功能适用性 TypeORM 适用于 OceanBase 数据库 MySQL 模式。 TypeORM 是一个支持 TypeScript 和 JavaScript 的 ORM 框架，支持多种数据库系统。本文将介绍如何使用 TypeORM 连接 OceanBase 数…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# 使用 TypeORM 连接 OceanBase 数据库

更新时间：2026-04-09 14:12:04

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/680.ecological-integration/200.orms-frameworks/600.nodejs/200.typeorm-connection-oceanbase-database-program.md)

#### 功能适用性

TypeORM 适用于 OceanBase 数据库 MySQL 模式。

TypeORM 是一个支持 TypeScript 和 JavaScript 的 ORM 框架，支持多种数据库系统。本文将介绍如何使用 TypeORM 连接 OceanBase 数据库的 MySQL 模式。

## 前提条件

- 已安装 Node.js 14.0.0 或更高版本
 - 已安装 npm 或 yarn 包管理器
 - 已部署 OceanBase 数据库并且创建了 MySQL 模式租户
 - TypeScript 环境（推荐）

## 操作步骤

1. 检查 Node.js 和 npm 版本
 2. 安装必要的依赖
 3. 配置项目
 4. 数据操作示例
 5. 运行示例

### 步骤一：检查 Node.js 和 npm 版本

打开终端，运行以下命令检查 Node.js 和 npm 的版本：

```bash
node -v
npm -v

```

### 步骤二：安装必要的依赖

1. 创建项目目录并初始化：

   ```bash
   mkdir typeorm-oceanbase-demo
   cd typeorm-oceanbase-demo
   npm init -y

   ```
 2. 安装 TypeORM 和 MySQL2 驱动：

   ```bash
   npm install typeorm mysql2 reflect-metadata

   # 如果使用 TypeScript
   npm install --save-dev typescript @types/node

   # 初始化 TypeScript 配置
   npx tsc --init

   ```
 3. 更新 `tsconfig.json` 以支持装饰器：

```json
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "target": "es6",
    "module": "commonjs",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules"]
}

```

### 步骤三：配置项目

1. 创建项目目录结构：

   ```bash
   mkdir -p src/entity src/migration src/subscriber

   ```
 2. 创建 TypeORM 配置文件 `ormconfig.json`：

   ```json
   {
     "type": "mysql",
     "host": "oceanbase-host",
     "port": 2881,
     "username": "your_username",
     "password": "your_password",
     "database": "your_database",
     "synchronize": true,
     "logging": false,
     "entities": ["src/entity/**/*.ts"],
     "migrations": ["src/migration/**/*.ts"],
     "subscribers": ["src/subscriber/**/*.ts"],
     "cli": {
       "entitiesDir": "src/entity",
       "migrationsDir": "src/migration",
       "subscribersDir": "src/subscriber"
     }
   }

   ```

#### 注意

- 将 `host`、`port`、`username`、`password` 和 `database` 替换为你的 OceanBase 数据库连接信息
 - 如果使用 SSL 连接，需要添加 `ssl: { rejectUnauthorized: false }` 配置
 - 开发时可以将 `synchronize` 设为 `true`，但在生产环境建议使用迁移（migrations）来管理数据库结构变更
 - 建议使用 `.env` 文件和环境变量来存储敏感信息

### 步骤四：数据操作示例

#### 1. 定义实体

创建 `src/entity/User.ts` 文件：

```typescript
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id?: number;

  @Column()
  firstName: string = "";

  @Column()
  lastName: string = "";

  @Column({ unique: true })
  email: string = "";

  @Column()
  age: number = 0;
}

```

#### 2. 创建数据库连接和操作示例

创建 `src/index.ts` 文件：

```typescript
import 'reflect-metadata';
import { createConnection } from 'typeorm';
import { User } from './entity/User';

async function main() {
  // 1. Create database connection
  const connection = await createConnection();
  console.log('Database connection established');

  // 2. 创建新用户
  const user = new User();
  user.firstName = "张";
  user.lastName = "三";
  user.email = "zhangsan@example.com";
  user.age = 25;

  await connection.manager.save(user);
  console.log('用户已保存，用户ID: ', user.id);

  // 3. 查询所有用户
  const users = await connection.manager.find(User);
  console.log('所有用户: ', users);

  // 4. 按条件查询
  const specificUser = await connection.manager.findOne(User, {
    where: {
      firstName: "张",
      lastName: "三"
    }
  });
  console.log('按条件查询: ', specificUser);

  // 5. 使用 QueryBuilder 进行复杂查询
  const userRepository = connection.getRepository(User);
  const queryBuilderUsers = await userRepository
    .createQueryBuilder("user")
    .where("user.age > :age", { age: 18 })
    .orderBy("user.age", "DESC")
    .getMany();
  console.log('复杂查询: ', queryBuilderUsers);

  // 6. 更新记录
  await connection
    .createQueryBuilder()
    .update(User)
    .set({ firstName: "李", lastName: "四" })
    .where("id = :id", { id: 1 })
    .execute();
  const updateUsers = await connection.manager.find(User);
  console.log('更新记录: ', updateUsers);

  // 7. 删除记录
  await connection
    .createQueryBuilder()
    .delete()
    .from(User)
    .where("id = :id", { id: 1 })
    .execute();
  const deleteUsers = await connection.manager.find(User);
  console.log('删除记录: ', deleteUsers);
}

main().catch(error => {
  console.error('Error occurred:', error);
  process.exit(1);
});

```

### 步骤五：运行示例

1. 确保数据库已启动并可访问
 2. 编译 TypeScript 代码：

   ```bash
   npx tsc

   ```
 3. 运行示例：

   ```bash
   node src/index.js

   ```

#### 说明

在实际项目中，请确保：

- 密码必须经过加密处理（如使用 bcrypt）
 - 处理可能出现的错误情况
 - 使用环境变量管理数据库连接信息
 - 添加适当的输入验证

## 相关文档

- [TypeORM 官方文档](https://typeorm.io/)
 - [OceanBase 文档](https://www.oceanbase.com/docs)
 - [TypeScript 文档](https://www.typescriptlang.org/)
 - [Node.js 文档](https://nodejs.org/en/docs/)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
