Nest通过TypeORM操作MySQL (二)
2021/8/8 2:06:29
本文主要是介绍Nest通过TypeORM操作MySQL (二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前一篇讲述了TypeORM的安装以及通过对象化的方式访问数据库。 然而很多场景下我们会需要更复杂的操作,如多表联合,然后映射为Entity。 本文在前一篇的基础上,用代码示例说明如何在TypeORM中实现SQL查询。
修改ormconfig.json, 增加新的配置项: Menu。与前一篇配置不同的是,此处有两个connection配置,默认使用的是default。
参考手册
[ { "name": "default", "type": "mysql", "host": "localhost", "port": 3306, "username": "root", "password": "Password01!", "database": "dmp", "entities": ["dist/**/*.entity.js"], "synchronize": true }, { "name": "Menu", "type": "mysql", "host": "localhost", "port": 3306, "username": "root", "password": "Password01!", "database": "dmp", "entities": ["dist/**/*.entity.js"] } ]
创建对象实体,这里由于是SQL查询映射而来,不是由数据库表映射,所以不需要在@Entity()上加表命参数
@Entity() export class Menu { @PrimaryGeneratedColumn() id: number; @Column({ length: 45 }) firstname: string; @Column({ length: 45 }) familyname: string; @Column({ length: 200 }) email: string; }
service层,注意此处的createConnection的参数,对应了ormconfig.json中的name参数
import { Repository, createConnection } from 'typeorm'; async getMenu(id: number): Promise<Menu> { const connection = await createConnection('Menu'); const userMenus = await connection .createQueryBuilder() .select('menu') .from(Menu, 'menu') .where('menu.id=:id', { id: id }) .getOne(); return userMenus; }
Controller增加访问方法
@Get('/user/:id') getMenu(@Param() params) { return this.service.getUserMenu(params.id); }
至此,我们只是粗略了解了typeorm的基础使用方式,感觉同.net平台的entity framework很类似。实际使用中会有更多的高级需求,如多表联合,主从等。
这篇关于Nest通过TypeORM操作MySQL (二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程