TypeORM查询的构建器,查询及其强大,我总结了几点常用查询方式。
// 创建构建器
const entity = 实体.createQueryBuilder('表名');
精准查询
// 精准匹配delFlag = '0'
entity.where('entity.delFlag = :delFlag', { delFlag: '0' });
模糊查询
// 模糊查询title字段包含 'hhh' 的数据
entity.andWhere(`entity.title LIKE "%${'hhh'}%"`)
筛选查询
筛选符合数组里面任意一个值
// 筛选查询 查询developer字段中包含developers之内的数据
const developers: string[] = ['aa','bb','cc']
entity.andWhere(`entity.developer IN (:...developers)`, { developers })
筛选符合数组中所有的值
const developers: string[] = ['aa','bb','cc']
developers.forEach((developer, index) => {
entity.andWhere(`FIND_IN_SET(:developer${index}, entity.developer) > 0`,
{[`developer${index}`]: developer });
});
时间查询
// 查询createTime字段时间范围为2024-08-22 00:00:00 - 2024-08-26 23:59:59 的数据
entity.andWhere('entity.createTime BETWEEN :start AND :end', { start: '2024-08-22 00:00:00', end: '2024-08-26 23:59:59'});
多表联查
// 关联客户表(接收容器,关联表的实体,关联表名称,关联条件)
entity.leftJoinAndMapOne('entity.customer', customerEntity, 'customer', 'customer.id = entity.customerId');
常用的查询就这些,如有有漏掉了,后续会补充。