快速掌握TypeORM

428 阅读1分钟

我们过了一遍 TypeORM 的各种概念,画个图总结下:

DataSource 里管理着数据库连接配置,数据库驱动包,调用它的 intialize 方法会创建和 mysql 的连接。

连接创建的时候,如果指定了 synchronize,会根据 Entitiy 生成建表 sql。

Entity 里通过 @Entity 指定和数据库表的映射,通过 @PrimaryGeneratedColumn 和 @Column 指定和表的字段的映射。

对 Entity 做增删改查通过 EntityManager 的 save、delete、find、createQueryBuilder 等方法。

如果只是对单个 Entity 做 CRUD,那可以先 getRepository 拿到对具体 Entity 操作的工具类,再调用 save、delete、find 等方法。

具体的 EntityManager 和 Repository 的方法有这些:

  • save:新增或者修改 Entity,如果传入了 id 会先 select 再决定修改还新增
  • update:直接修改 Entity,不会先 select
  • insert:直接插入 Entity
  • delete:删除 Entity,通过 id
  • remove:删除 Entity,通过对象
  • find:查找多条记录,可以指定 where、order by 等条件
  • findBy:查找多条记录,第二个参数直接指定 where 条件,更简便一点
  • findAndCount:查找多条记录,并返回总数量
  • findByAndCount:根据条件查找多条记录,并返回总数量
  • findOne:查找单条记录,可以指定 where、order by 等条件
  • findOneBy:查找单条记录,第二个参数直接指定 where 条件,更简便一点
  • findOneOrFail:查找失败会抛 EntityNotFoundError 的异常
  • query:直接执行 sql 语句
  • createQueryBuilder:创建复杂 sql 语句,比如 join 多个 Entity 的查询
  • transaction:包裹一层事务的 sql
  • getRepository:拿到对单个 Entity 操作的类,方法同 EntityManager

这些概念和 api 在后面会经常用到,需要理解它们各自都是干啥的。