TypeORMでRaw SQLを使用する方法


  1. クエリの実行方法 TypeORMでは、EntityManagerやRepositoryを使用してRaw SQLクエリを実行することができます。EntityManagerを使用する場合は、以下のように書きます。
import { getManager } from 'typeorm';
const entityManager = getManager();
async function executeRawQuery() {
  try {
    const query = 'SELECT * FROM users';
    const result = await entityManager.query(query);
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}
executeRawQuery();

Repositoryを使用する場合は、以下のように書きます。

import { getRepository } from 'typeorm';
const userRepository = getRepository(User);
async function executeRawQuery() {
  try {
    const query = 'SELECT * FROM users';
    const result = await userRepository.query(query);
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}
executeRawQuery();
  1. パラメータのバインド Raw SQLクエリ内でパラメータを使用する場合は、セキュリティのためにパラメータをバインドすることをおすすめします。以下は、パラメータをバインドする例です。
import { getManager } from 'typeorm';
const entityManager = getManager();
async function executeRawQueryWithParameters() {
  try {
    const query = 'SELECT * FROM users WHERE age > :age';
    const parameters = { age: 18 };
    const result = await entityManager.query(query, parameters);
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}
executeRawQueryWithParameters();
  1. トランザクションの使用 Raw SQLクエリをトランザクション内で実行する場合は、EntityManagerを使用してトランザクションを開始し、クエリを実行します。以下は、トランザクション内でRaw SQLクエリを実行する例です。
import { getManager } from 'typeorm';
const entityManager = getManager();
async function executeRawQueryInTransaction() {
  const query = 'UPDATE users SET age = age + 1 WHERE id = :id';
  const parameters = { id: 1 };
  try {
    await entityManager.transaction(async (transactionalEntityManager) => {
      await transactionalEntityManager.query(query, parameters);
    });
    console.log('Query executed in transaction');
  } catch (error) {
    console.error(error);
  }
}
executeRawQueryInTransaction();