Kid*_*g_C 5 typescript typeorm
https://typeorm.io/#/select-query-builder/how-to-create-and-use-a-querybuilder
创建查询生成器的方法有多种:
使用连接:
import {getConnection} from "typeorm";
const user = await getConnection()
.createQueryBuilder()
.select("user")
.from(User, "user")
.where("user.id = :id", { id: 1 })
.getOne();
Run Code Online (Sandbox Code Playgroud)
使用实体管理器:
import {getManager} from "typeorm";
const user = await getManager()
.createQueryBuilder(User, "user")
.where("user.id = :id", { id: 1 })
.getOne();
Run Code Online (Sandbox Code Playgroud)
使用存储库:
import {getRepository} from "typeorm";
const user = await getRepository(User)
.createQueryBuilder("user")
.where("user.id = :id", { id: 1 })
.getOne();
Run Code Online (Sandbox Code Playgroud)
该文档从未解释这些方法之间的区别。每种方法什么时候使用?
看一下源码:
/**
* Gets connection from the connection manager.
* If connection name wasn't specified, then "default" connection will be retrieved.
*
* @deprecated
*/
export function getConnection(connectionName: string = "default"): DataSource {
return getConnectionManager().get(connectionName)
}
Run Code Online (Sandbox Code Playgroud)
/**
* Gets repository for the given entity class.
*
* @deprecated
*/
export function getRepository<Entity extends ObjectLiteral>(
entityClass: EntityTarget<Entity>,
connectionName: string = "default",
): Repository<Entity> {
return getConnectionManager()
.get(connectionName)
.getRepository<Entity>(entityClass)
}
Run Code Online (Sandbox Code Playgroud)
/**
* Gets entity manager from the connection.
* If connection name wasn't specified, then "default" connection will be retrieved.
*
* @deprecated
*/
export function getManager(connectionName: string = "default"): EntityManager {
return getConnectionManager().get(connectionName).manager
}
Run Code Online (Sandbox Code Playgroud)
getConnection()
返回 a DataSource
、getRepository()
返回 aRepository
并getManager()
返回 a EntityManager
。它们都有该createQueryBuilder()
方法,请参阅Repository.ts#L77、DataSource.ts#L555和EntityManager.ts#L194
那么它们之间的区别是:
归档时间: |
|
查看次数: |
1625 次 |
最近记录: |