如何创建和使用QueryBuilder

有几种方法可以创建Query Builder

  • 使用 connection:

    1. import { getConnection } from "typeorm";
    2. const user = await getConnection()
    3. .createQueryBuilder()
    4. .select("user")
    5. .from(User, "user")
    6. .where("user.id = :id", { id: 1 })
    7. .getOne();
  • 使用 entity manager:

    1. import { getManager } from "typeorm";
    2. const user = await getManager()
    3. .createQueryBuilder(User, "user")
    4. .where("user.id = :id", { id: 1 })
    5. .getOne();
  • 使用 repository:

    1. import { getRepository } from "typeorm";
    2. const user = await getRepository(User)
    3. .createQueryBuilder("user")
    4. .where("user.id = :id", { id: 1 })
    5. .getOne();

有 5 种不同的QueryBuilder类型可用:

  • SelectQueryBuilder - 用于构建和执行SELECT查询。 例如:

    1. import { getConnection } from "typeorm";
    2. const user = await getConnection()
    3. .createQueryBuilder()
    4. .select("user")
    5. .from(User, "user")
    6. .where("user.id = :id", { id: 1 })
    7. .getOne();
  • InsertQueryBuilder - 用于构建和执行INSERT查询。 例如:

    1. import { getConnection } from "typeorm";
    2. await getConnection()
    3. .createQueryBuilder()
    4. .insert()
    5. .into(User)
    6. .values([{ firstName: "Timber", lastName: "Saw" }, { firstName: "Phantom", lastName: "Lancer" }])
    7. .execute();
  • UpdateQueryBuilder - 用于构建和执行UPDATE查询。 例如:

    1. import { getConnection } from "typeorm";
    2. await getConnection()
    3. .createQueryBuilder()
    4. .update(User)
    5. .set({ firstName: "Timber", lastName: "Saw" })
    6. .where("id = :id", { id: 1 })
    7. .execute();
  • DeleteQueryBuilder - 用于构建和执行DELETE查询。 例如:

    1. import { getConnection } from "typeorm";
    2. await getConnection()
    3. .createQueryBuilder()
    4. .delete()
    5. .from(User)
    6. .where("id = :id", { id: 1 })
    7. .execute();
  • RelationQueryBuilder - 用于构建和执行特定于关系的操作[TBD]。

你可以在其中切换任何不同类型的查询构建器,一旦执行,则将获得一个新的查询构建器实例(与所有其他方法不同)。