TypeORM - 使用实体管理器

EntityManager 与 Repository 类似,用于管理数据库操作,例如插入、更新、删除和加载数据。虽然 Repository 处理单个实体,但 EntityManager 对所有实体都通用,并且能够对所有实体执行操作。

实体管理器 API

我们可以使用 getManager() 方法访问 EntityManager,如下所示 −

import { getManager } from "typeorm"; const entityManager = getManager();

让我们在本章中学习 EntityManager 最重要的方法。

connection

connection 方法返回到特定数据库的数据库 ORM 连接。示例代码如下 −

const connection = manager.connection;

QueryRunner

queryRunner方法返回自定义查询运行器对象,供实体管理器用于数据库操作。示例代码如下 −

const queryRunner = manager.queryRunner;

transaction

如果调用多个数据库请求,事务将在单个数据库事务中执行。获取事务的示例代码如下 −

await manager.transaction(async manager => {
});

query

query方法执行sql查询。简单的插入查询如下所示 −

const qur = await manager.query(`insert into student(name,age) values('stud2',13)`);

insert

insert 方法用于向数据库插入新实体或实体数组。示例代码如下 −

await manager.insert(Student, { 
   Name: "Student3", 
   Age: 14 
});

update

update 用于更新数据库中的现有记录。

await manager.update(User, 1, { Name: "Adam" });

此查询的工作方式类似于以下 SQL 查询,

UPDATE student SET Name = "Adam" WHERE id = 1

delete

delete 方法将从表中删除指定的记录,

await manager.delete(Student, 1);

这将删除 id 为 1 的学生记录。

save

save 用于将给定实体保存到数据库中。简单的 Student 实体可以按如下所示保存 −

import {Student} from "./entity/Student";

createConnection().then(async connection => {   
   console.log("Inserting a new record into the student database..."); 
   const stud = new Student(); stud.Name = "student1"; 
   stud.age = 12; 
   await connection.manager.save(stud); 
}

这将向数据库中添加新的学生记录。如果数据库中不存在给定的学生,则 save 方法将插入学生。否则,save 将更新数据库中现有的学生记录。

remove

remove 用于从数据库中删除给定的实体。简单的学生实体可以删除,如下所示 −

await manager.remove(stud);

count

count 方法将返回表中可用的记录数,您可以使用它进行分页。示例代码如下 −

const cnt = await manager.count(Student, { age: 12 });

find

find 方法用于搜索目的。它从数据库中获取所有记录,如下所示 −

console.log("正在从数据库加载用户...");
const students = await connection.manager.find(Student); console.log("已加载用户: ", students);

findOne

与 find 方法类似,但返回第一个匹配的记录。示例代码如下 −

const stud = await manager.findOne(Student, 1);

clear

clear 方法清除表中的所有数据。示例代码如下 −

await manager.clear(Student);


关于我们 | 隐私条款 | 学习路线
返回顶部