📜  TypeORM-查询操作(1)

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

TypeORM-查询操作

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");

上面的代码展示了一些常用的关联查询方法,包括内连接查询和左连接查询。多层关联可以通过多次调用 innerJoinAndSelectleftJoinAndSelect 方法实现。

执行查询

最后一步是执行查询并获取结果。TypeORM 提供了多种执行查询的方法,包括 getManygetOnegetCountgetRawMany 等。具体使用哪种方法取决于查询的需求和预期的结果。

// 获取多个结果
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