typeorm

TypeORM简介

TypeORM是一个ORM框架,是使用TypeScript和JavaScript编写的,它支持多种关系型数据库,包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server等。TypeORM可以帮助我们更轻松地管理数据库,不需要编写大量的SQL语句。

安装

TypeORM可以使用npm进行安装,我们可以在终端中输入以下命令:

npm i typeorm --save

还需要安装连接数据库的库,例如mysql、pg等:

npm i mysql --save
npm i pg --save

配置

TypeORM的配置是通过一个配置文件实现的。我们需要在项目根目录下创建一个ormconfig.json文件,这个文件包含了我们连接数据库所需要的配置,例如数据库类型、主机名、用户名、密码、端口以及数据库名等信息。

一个简单的ormconfig.json文件如下:

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "password",
  "database": "database_name",
  "entities": [
    "src/entity/**/*.ts"
  ],
  "synchronize": true
}

实体

实体是TypeORM的核心概念,它们是映射到数据库表的类。TypeORM支持使用装饰器将类转换为实体。一个简单的实体类如下:

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

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

  @Column()
  name: string;

  @Column()
  age: number;
}

实体类中使用@Entity()装饰器来表示这是一个实体类,并使用@PrimaryGeneratedColumn()装饰器表示这是主键列。

仓库

仓库是管理实体的类。TypeORM会为每个实体自动生成一个仓库类,我们也可以手动创建一个仓库类来管理实体,使用@EntityRepository()装饰器来表示这是一个仓库类。

import { EntityRepository, Repository } from "typeorm";
import { User } from "../entity/user.entity";

@EntityRepository(User)
export class UserRepository extends Repository<User> {}

查询

TypeORM提供了一种基于查询构造器的查询语言,这使得构建SQL查询更加简便。例如,在仓库类中查询所有用户的语句如下:

const users = await userRepository.find();

我们也可以添加一些条件查询:

const users = await userRepository.find({
  where: {
    name: "John",
    age: MoreThan(18)
  },
  order: {
    name: "ASC"
  },
  skip: 10,
  take: 10
})

关系

TypeORM支持多种关系,包括一对一、一对多、多对多等。例如,一个用户可以拥有多个订单:

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

  @Column()
  name: string;

  @Column()
  age: number;

  @OneToMany(type => Order, order => order.user)
  orders: Order[];
}

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

  @Column()
  amount: number;

  @ManyToOne(type => User, user => user.orders)
  user: User;
}

在用户实体中,我们使用@OneToMany()来表示一个用户可以拥有多个订单。在订单实体中,我们使用@ManyToOne()来表示多个订单可以对应一个用户。

总结

TypeORM是一个强大的ORM框架,提供了多种功能来管理数据库。它支持多种数据库,使用TypeScript或JavaScript编写,易于使用和配置。

posted @ 2023-05-28 12:41  Qihoo360  阅读(218)  评论(0编辑  收藏  举报
You're powerful!