📅  最后修改于: 2023-12-03 15:20:42.839000             🧑  作者: Mango
TypeORM 是一个用于 Node.js 和 TypeScript 的 ORM(Object Relational Mapping) 框架。它支持多种数据库系统(如 MySQL、PostgreSQL、SQLite、Microsoft SQL Server 等),并提供了一种面向对象的方式来操作数据库。
在 TypeORM 中,查询操作是非常常见和重要的一部分。本文将介绍 TypeORM 中的查询操作,包括创建查询、条件查询、关联查询等内容,以帮助程序员熟悉和使用 TypeORM 进行高效的数据查询。
要创建一个查询操作,首先需要获取一个查询构建器(Query Builder)。查询构建器可以通过实体管理器(Entity Manager)或存储库(Repository)来获取。
import { getRepository } from "typeorm";
const userRepository = getRepository(User);
const queryBuilder = userRepository.createQueryBuilder("user");
上面的代码中,我们通过 getRepository
方法获取了一个 User
实体的存储库,并使用 createQueryBuilder
创建了一个查询构建器。createQueryBuilder
方法接受一个表别名参数。
在查询操作中,条件查询是非常常见的。TypeORM 提供了丰富的条件查询方法,可以方便地构建各种复杂的查询条件。
import { Like } from "typeorm";
// 简单的等于查询
queryBuilder.where("user.name = :name", { name: "John" });
// 模糊查询
queryBuilder.where("user.name LIKE :name", { name: `%${searchKeyword}%` });
// 大于查询
queryBuilder.where("user.age > :age", { age: 18 });
// 多条件查询
queryBuilder.where("user.age > :age", { age: 18 }).andWhere("user.name LIKE :name", { name: `%${searchKeyword}%` });
// IN 查询
queryBuilder.where("user.id IN (:...ids)", { ids: [1, 2, 3] });
上面的代码展示了一些常见的条件查询方法,包括等于查询、模糊查询、大于查询、多条件查询和 IN 查询。查询方法的参数可以使用命名参数或占位符,参数值可以是直接的值,也可以是变量。
TypeORM 支持在查询中进行关联查询,可以通过 .leftJoinAndSelect
、.innerJoinAndSelect
、.leftJoin
、.innerJoin
等方法实现。
// 内连接查询
queryBuilder.innerJoinAndSelect("user.profile", "profile");
// 左连接查询
queryBuilder.leftJoinAndSelect("user.documents", "document");
// 内连接查询的多层关联
queryBuilder.innerJoinAndSelect("user.profile", "profile").innerJoinAndSelect("profile.address", "address");
上面的代码展示了一些常用的关联查询方法,包括内连接查询和左连接查询。多层关联可以通过多次调用 innerJoinAndSelect
或 leftJoinAndSelect
方法实现。
最后一步是执行查询并获取结果。TypeORM 提供了多种执行查询的方法,包括 getMany
、getOne
、getCount
、getRawMany
等。具体使用哪种方法取决于查询的需求和预期的结果。
// 获取多个结果
const users = await queryBuilder.getMany();
// 获取单个结果
const user = await queryBuilder.getOne();
// 获取结果数量
const count = await queryBuilder.getCount();
// 获取原生的查询结果
const rawResults = await queryBuilder.getRawMany();
上面的代码展示了一些常见的查询执行方法,可以根据实际情况选择适合的方法。
本文介绍了 TypeORM 中的查询操作,包括创建查询、条件查询和关联查询等内容。通过学习这些查询操作,程序员可以更加熟悉和灵活地使用 TypeORM 进行数据查询,在项目中提高数据操作的效率和灵活性。
详细的查询操作可以参考 TypeORM 的官方文档:TypeORM Query Builder。