• 如何创建和使用QueryBuilder

    如何创建和使用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]。

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