乐闻世界logo
搜索文章和话题

如何将 SQL 语句转换为 TypeORM 的 query builder?

6 个月前提问
5 个月前修改
浏览次数35

1个答案

1

在TypeORM中,可以使用Query Builder来构建和执行SQL查询。Query Builder提供了一种链式调用方法来构建查询,这使得它比直接写SQL语句更灵活和安全。以下是将普通的SQL语句转换为TypeORM的Query Builder代码的步骤和例子。

假设我们有一个名为user的表,我们想要执行这个SQL查询:

sql
SELECT * FROM user WHERE age > 25 AND is_active = true;

要使用TypeORM Query Builder,你将需要按照以下步骤转换这个查询:

  1. 创建一个Query Builder实例。
  2. 指定要查询的实体或表。
  3. 添加选择条件。
  4. 执行查询。

以下是对应的TypeORM Query Builder代码:

typescript
import { getRepository } from 'typeorm'; import { User } from './entity/User'; // 创建一个Repository实例 const userRepository = getRepository(User); // 使用Query Builder构造查询 userRepository.createQueryBuilder('user') .where('user.age > :age', { age: 25 }) .andWhere('user.isActive = :isActive', { isActive: true }) .getMany().then(users => { // 对结果进行处理 console.log(users); }).catch(error => { // 处理错误 console.error(error); });

在上面的代码示例中,我们首先导入了getRepository函数和User实体。我们通过调用getRepository函数来获取User实体的Repository。然后,我们使用createQueryBuilder方法创建一个新的Query Builder实例,并给它一个别名user。我们用whereandWhere方法添加了查询条件。最后,我们使用getMany方法执行查询,并处理结果。

如果有更复杂的查询,比如联表查询、分组、排序等,Query Builder也可以支持:

typescript
userRepository.createQueryBuilder('user') .leftJoinAndSelect('user.photos', 'photo') .where('user.age > :age', { age: 25 }) .andWhere('user.isActive = :isActive', { isActive: true }) .orderBy('user.name', 'ASC') .groupBy('user.id') .getMany();

在这个例子中,我们使用了leftJoinAndSelect来进行联表查询,orderBy来进行排序,以及groupBy来进行分组。

这样,我们就可以将SQL语句转换为TypeORM的Query Builder代码,同时保持代码的可读性和可维护性。

2024年6月29日 12:07 回复

你的答案