📜  TypeORM-使用实体管理器(1)

📅  最后修改于: 2023-12-03 15:20:42.823000             🧑  作者: Mango

TypeORM-使用实体管理器

TypeORM是一个基于Typescript的ORM框架,可以方便地管理数据库实体。在TypeORM中,实体管理器是一种能够操作数据库实体的强大工具。

实体管理器基础操作
创建实体管理器

在使用实体管理器之前,需要先创建一个TypeORM连接。可以使用如下代码创建连接:

import { createConnection } from "typeorm";

const connection = await createConnection({
  type: "mysql",
  host: "localhost",
  port: 3306,
  username: "root",
  password: "password",
  database: "test",
  entities: [entity1, entity2],
  synchronize: true,
});

其中,entities属性指定需要管理的实体。创建连接后,就可以使用实体管理器了。代码如下:

import { getManager } from "typeorm";

const manager = getManager();
插入数据

使用实体管理器插入一条数据可以使用如下代码:

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

const user = new User();
user.name = "Alice";
user.age = 20;
await manager.insert(User, user);
更新数据

使用实体管理器更新一条数据可以使用如下代码:

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

const user = new User();
user.id = 1;
user.age = 21;
await manager.update(User, 1, user);
查询数据

使用实体管理器查询数据可以使用如下代码:

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

const users = await manager.find(User);
删除数据

使用实体管理器删除一条数据可以使用如下代码:

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

await manager.delete(User, 1);
实体管理器高级操作

实体管理器还有很多高级操作,包括事务操作、多表关联查询等。下面介绍两个常用的高级操作。

事务操作

使用实体管理器进行事务操作可以使用如下代码:

await manager.transaction(async (entityManager) => {
  const user1 = new User();
  user1.name = "Tom";
  user1.age = 21;
  await entityManager.save(User, user1);

  const user2 = new User();
  user2.name = "Jerry";
  user2.age = 20;
  await entityManager.save(User, user2);
});
多表关联查询

使用实体管理器进行多表关联查询可以使用如下代码:

const users = await manager
  .createQueryBuilder(User, "user")
  .leftJoinAndSelect("user.address", "address")
  .where("user.name = :name", { name: "Alice" })
  .getMany();

在上面的代码中,使用createQueryBuilder方法创建查询构造器。调用leftJoinAndSelect方法可以进行多表关联查询,调用where方法可以设置查询条件。最后调用getMany方法获取查询结果。

总结

实体管理器是TypeORM中的一个强大工具,可以方便地管理数据库实体。本文介绍了实体管理器的基础操作和高级操作,希望可以帮助使用TypeORM的开发者快速掌握实体管理器的知识。