📅  最后修改于: 2023-12-03 15:05:39.173000             🧑  作者: Mango
TypeORM是一款基于TypeScript的ORM框架,它支持许多数据库(包括MySQL,PostgreSQL,Oracle,SQLite,MS SQL Server和MongoDB)和Node.js环境。TypeORM提供了强大的查询生成器,可以帮助程序员快速高效地操作数据库。
你可以通过以下命令来安装TypeORM:
npm install typeorm --save
首先,我们需要通过以下方式来创建数据库连接:
import { createConnection } from "typeorm";
const connection = await createConnection();
这里我们使用了TypeORM的createConnection
方法来创建数据库连接,并通过await
关键字来等待连接成功后再执行后续操作。
TypeORM的查询生成器基于实体类(Entity)和查询条件(Query)两个概念。
实体类是映射到数据库表中的JavaScript类。我们可以在实体类中定义表的结构和字段等信息。例如,下面是一个简单的实体类定义:
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";
@Entity()
class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
age: number;
}
在上面的代码中,我们定义了一个名为User
的实体类,它对应了一张名为users
的表。@PrimaryGeneratedColumn
和@Column
是TypeORM提供的装饰器,用于定义表的主键和字段。这里我们定义了一个主键id
和两个字段name
和age
。
查询条件是指查询操作所需要的各种条件,例如WHERE条件、ORDER BY操作等等。
我们可以使用TypeORM的QueryBuilder来生成查询条件。例如,以下代码将返回一个所有年龄大于20岁的用户列表:
import { getConnection } from "typeorm";
const users = await getConnection()
.createQueryBuilder()
.select()
.from(User, "user")
.where("user.age > :age", { age: 20 })
.getMany();
该方法使用getConnection()
来获取数据库连接,然后调用.createQueryBuilder()
来创建查询构造器实例,并通过.select()
指定要查询的字段,通过.from()
指定要查询的实体类和别名,最后通过.where()
方法指定查询条件,并使用.getMany()
方法执行查询并返回结果。
这种方式可以根据需要灵活组合各种查询条件,可以满足绝大部分的数据库查询需求。您可以查看官方文档了解更多使用方法。
下面是一个完整的TypeScript示例代码,它实现了一个简单的CRUD操作,您可以直接运行它来了解查询生成器的使用方法。
import * as dotenv from "dotenv";
import { ConnectionOptions, createConnection, getConnection } from "typeorm";
import { User } from "./entity/User";
dotenv.config();
const options: ConnectionOptions = {
type: "mysql",
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
synchronize: true,
entities: [User],
};
async function run() {
const connection = await createConnection(options);
const { manager } = connection;
// 插入数据
const user = new User();
user.name = "张三";
user.age = 25;
await manager.save(user);
// 更新数据
await manager.update(User, { name: "张三" }, { age: 26 });
// 查询数据
const users = await getConnection()
.createQueryBuilder()
.select()
.from(User, "user")
.where("user.age > :age", { age: 20 })
.getMany();
console.log(users);
// 删除数据
await manager.delete(User, { name: "张三" });
await connection.close();
}
run().catch((error) => console.error(error));
注意,上述示例代码需要在.env
文件中定义以下环境变量:
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASE=test
使用TypeORM查询生成器可以帮助开发人员更加高效地操作数据库,提高开发效率。通过本文的介绍,相信您已经掌握了TypeORM查询生成器的基本用法,欢迎您在实际项目中尝试使用。