QueryBuilder запрос как составить?

QueryBuilder – это инструмент, который позволяет генерировать динамические SQL-запросы без необходимости явного написания кода на языке SQL. Вместо этого вы можете использовать синтаксис языка программирования, с которым вы работаете, чтобы генерировать запросы.

В качестве примера давайте рассмотрим, как создать простой запрос SELECT с использованием QueryBuilder в TypeScript.

Для начала установите пакет typeorm, который является популярным ORM-фреймворком для TypeScript. Вы можете сделать это, выполнив следующую команду в командной строке:

npm install typeorm

Затем создайте новый файл TypeScript, например queryBuilderExample.ts, и импортируйте необходимые зависимости:

import { createConnection, getConnection } from 'typeorm';
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()
class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

Далее создайте код, который подключается к базе данных и генерирует запрос:

async function doQuery() {
  const connection = await createConnection({
    type: 'mysql',
    host: 'localhost',
    port: 3306,
    username: 'root',
    password: 'password',
    database: 'exampledb',
    entities: [User],
    synchronize: true,
  });

  const queryBuilder = getConnection()
    .createQueryBuilder()
    .select('user')
    .from(User, 'user')
    .where('user.name = :name', { name: 'John' })
    .andWhere('user.email = :email', { email: '[email protected]' });

  const result = await queryBuilder.getMany();

  console.log(result);

  await connection.close();
}

doQuery();

В приведенном выше коде мы создаем соединение с базой данных, определяем сущность User, а затем создаем QueryBuilder, который выполняет следующий запрос:

SELECT user.*
FROM User user
WHERE user.name = 'John' AND user.email = '[email protected]'

Поскольку мы использовали метод getMany(), результатом будет массив объектов User, соответствующих условию запроса.

Если вы хотите выполнить другие операции (например, INSERT, UPDATE или DELETE), вы можете использовать соответствующие методы QueryBuilder, такие как insert(), update() или delete(). Принцип использования QueryBuilder для этих операций будет аналогичен.