📜  TypeORM-实体(1)

📅  最后修改于: 2023-12-03 15:20:42.836000             🧑  作者: Mango

TypeORM-实体

TypeORM是一个基于Typescript的ORM框架,它支持多种数据库,包括PostgreSQL,MySQL,MariaDB,SQLite,MS SQL Server,Oracle,WebSQL等。TypeORM的实体是ORM体系结构的核心之一,用于表示数据库中的表以及与表相关联的数据类型。

实体的定义

实体可以用装饰器@Entity来定义,例如:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

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

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column()
  age: number;
}

代码解释:

  • Entity: 用于装饰实体类,指定该类将映射到数据库中的哪个表。
  • Column:用于装饰模型属性,指定该属性将映射到表中的哪个列。
  • PrimaryGeneratedColumn:用于装饰实体类里的主键列,自动生成。
实体的配置

TypeORM实体的配置比较灵活,可以通过实体装饰器@Entity的参数来进行配置。例如:

@Entity({ 
  name: 'users',
  database: 'my-db',
  schema: 'public',
})
export class User {
  // ...
}
  • name: 指定实体类对应的数据库表名。
  • database: 指定实体所属的数据库名。
  • schema: 指定实体类所在的数据库模式。

此外,还可以通过@Index、@Unique、@OneToMany等装饰器进行索引、唯一约束、一对多关联等配置。

实体的使用

在使用TypeORM实体之前,需要先创建一个TypeORM连接。连接创建代码示例如下:

import { createConnection } from 'typeorm';

createConnection({
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'test',
  password: 'test',
  database: 'test',
  entities: [User],
  synchronize: true,
}).then(connection => {
  console.log(`Connected to ${connection.options.type} database.`);
}).catch(error => {
  console.log('Cannot connect to database.', error);
});

代码解释:

  • createConnection: 用于创建一个TypeORM连接。
  • type: 指定数据库类型。
  • host: 指定数据库主机。
  • port: 指定数据库端口。
  • username: 指定数据库用户名。
  • password: 指定数据库密码。
  • database: 指定数据库名。
  • entities: 指定连接中可用的所有实体类。
  • synchronize: 指定是否自动同步实体与数据库。

连接创建后,可以使用EntityManager进行实体查询、插入、更新、删除等操作,例如:

import { getManager } from 'typeorm';

const user = new User();
user.firstName = 'John';
user.lastName = 'Doe';
user.age = 30;

const entityManager = getManager();

// 插入一条新用户
await entityManager.save(user);

// 查询所有用户
const users = await entityManager.find(User);

// 更新一个用户
await entityManager.update(User, 1, { firstName: 'Jane', lastName: 'Doe', age: 25 });

// 删除一个用户
await entityManager.delete(User, 1);

代码解释:

  • getManager: 用于获取一个Entity Manager实例。
  • entityManager.save: 用于将一个实体对象保存到数据库中。
  • entityManager.find: 用于查询符合条件的实体对象(可以传入查询条件、排序方式等)。
  • entityManager.update: 用于更新符合条件的实体对象。
  • entityManager.delete: 用于删除符合条件的实体对象。

更多关于TypeORM实体的使用,可以查看TypeORM官方文档。