- クエリの実行方法 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();
- パラメータのバインド 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();
- トランザクションの使用 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();