nest QueryBuilder

通过Entity Manager创建QueryBuilder

创建QueryBuilder的方法有多种

  • 1、
import { getManager } from "typeorm";

const user = await getManager()
	.createQueryBuilder(UserEntity, "user") // 使用UserEntity 定义别名user
	.where("user.id = :id", { id: 1 }) // 查询条件 id: 1
	.getOne(); // 获取一条数据
  • 2、
const user = await getConnection()
  .createQueryBuilder(User, 'user')
  .select(['user.id', 'user.username'])
  .where('(user.id=:id)', { id: 1 })
  .getOne();
console.log(user);
  • 3、
const user = await getRepository(User)
  .createQueryBuilder('user')
  .getMany();
console.log(user);
QueryBuilder 五种类型
  • 1、查询数据
const user = await getConnection()
  .createQueryBuilder(UserEntity, 'user')
  .select(['user.id', 'user.username']) // 查询 id 和 username
  .where('(user.id=:id)', { id: 1 })
  .getOne();
console.log(user);
  • 2、插入数据
const result = await getConnection()
	.createQueryBuilder()
	.insert() // 插入数据到实体类UserEntity中
	.into(UserEntity)
	.values([
		{ username: "张三", password: "123456" }, 
		{ username: "李四", password: "123456" }
	])
	.execute()
	console.log(result)
  • 3、更新数据
const result = await getConnection()
	.createQueryBuilder()
	.update(UserEntity)
	.set({ username: "哈哈哈" })
	.where("id=:id", { id: 1 })
	.execute()
console.log(result)
  • 4、删除数据
const result = await getConnection()
	.createQueryBuilder()
	.delete()
	.from(UserEntity)
	.where("id=:id", { id: 1 })
	.execute()
console.log(result)
  • 5、创建关系查询
const result = await getConnection()
	.createQueryBuilder(UserEntity, "user")
	.leftJoinAndMapMany("user.posts", Posts, "posts", "user.id=posts.userId")
	.getMany()
console.log(JOSN.stringify(result))
queryBuilder 查询实战
  async getRoles(searchRolesDto: SearchRolesDto): Promise<[RolesEntity[], number]> {
    const { page = 1, pageSize = 20, roleName, creator } = searchRolesDto
    // 目前页面设置 查询 角色名称 创建者
    this.toolsService.checkPage(page, pageSize) // 校验 page,pageSize
    const queryConditionList = ["roles.isDel=:isDel"] // 初始查询条件 是否删除
    if (roleName) {
      queryConditionList.push("roles.name LIKE :name") // 如果有用户名称 添加模糊查询
    }
    if (creator) {
      queryConditionList.push("roles.creator=:creator") // 如果有创建者 添加精确查询
    }
    const queryCondition = queryConditionList.join(" AND ") // 拼接查询条件

    return await getConnection()
      .createQueryBuilder(RolesEntity, "roles")
      .select()
      .andWhere(queryCondition, { isDel: 0, name: `%${roleName}%`, creator }) // 设置查询内容
      .skip((~~page - 1) * ~~pageSize) // 跳过多少条数据
      .take(~~pageSize) // 获取pageSize条数据
      .orderBy("roles.createdAt", "DESC") // 根据创建时间 倒序
      .printSql() // 打印sql语句
      .getManyAndCount() // 获取列表数据 和 总数
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值