typeorm基本运用

 一种是根据entity实体使用

import { HttpException,Injectable } from '@nestjs/common';
import { UserEntity } from './user.entity';
import { Repository} from 'typeorm';
import { InjectRepository} from '@nestjs/typeorm';

/*
* 在构造器里边进行定义
*/

@Injectable()
export class UserService {
    constructor(
       @InjectRepository(UserEntity)
       private readonly userRepository: Repository<UserEntity>,
     ) { }


    /*
    * 查询一个数据 使用findOne where 是选择的条件
    */
    async findOne(id: string) {
         return await this.userRepository.findOne({ where: { id } })
    }

    
    /*
    * 新增一条数据需要运用到 create save
    */
    async Register(post: Partial<UserEntity>): Promise<{}> {
           const { LoginName } = post;
           const user = await this.userRepository.findOne({ where: { LoginName } });
           if (user) {
               throw new HttpException('账号已存在');
           }
           const newUser = await this.userRepository.create(post);
           return this.userRepository.save(newUser);
       }


    /*
    * 修改数据 merge save
    */
    async UpdateUserName(post, userInfo) {
        const { id } = userInfo;
        const { userName } = post;
        const user = await this.userRepository.findOne({ where: { id } });
        if (user && userName) {
            const updatePost = this.userRepository.merge(user, {
                userName : userName,
            });
            await this.userRepository.save(updatePost);
        }
    }


    /*
    * 删除数据 delete
    */
    async deleteUserById(post, userInfo): Promise<{}> {
       this.userRepository.delete({ id });
    }

    /*
    * 获取列表的数据
    */
    async GetUserList(post) {
        const { pagenum = 1, pagesize = 10, keyword } = post;
        const qb = this.userRepository.createQueryBuilder('user'); // qb实体
        // 如果有关键字,进行账号模糊查询
        if (keyword) {
            qb.where({
                account: Like(`%${keyword}%`),
            });
        }
        // 定义要返回的字段
        qb.select([
            'user.id',
            'user.name',
            'user.userName',
            'user.create_time',
            'user.update_time',
            'user.delete_time',
        ]); // 需要的属性
        qb.where("user.id = :id", { id: 1 }) // 如果需要增加条件语句
        qb.orderBy('user.create_time', 'ASC'); // 'ASC' 升序 'DESC' 降序
        const count = await qb.getCount(); // 查总数
        qb.offset(pagesize * (pagenum - 1)); // 偏移位置
        qb.limit(pagesize); // 条数
        const list = await qb.getMany(); // 获取分页的用户数据
        return {
            list,
            count 
        }
    }
}

  一种是使用EntityManager运用

import { EntityManager } from 'typeorm';

/*
* 联表查询
*/
async GetTestData(query) {
        let { page, pageSize } = query
        let list = await this.entityManager.query(
            `
            SELECT 
            u.id,
            u.code,
		    s.name,
            m.name trackBy
            FROM test u
			LEFT JOIN test1 s ON s.code=u.supplier_code
            LEFT JOIN test2 m ON m.user_id=u.track_user_id
            where u.id != 274
			LIMIT ${page - 1}, ${pageSize};
            `
        )
        let count = await this.entityManager.query(
            `
            SELECT COUNT(*) AS count FROM srm_purchase WHERE id != 274
            `
        )
        return {
            list,
            count: count[0].count
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值