06 TypeScript类型、接口、类、泛型综合使用----封装统一操作MySql、MongoDB、MsSql的底层类库

ts类型、接口、类、泛型综合使用----ts封装统一操作MySql、MongoDB、MsSql的底层类库

功能:定义一个操作数数据库的类库 支持mysql、mssql、mongodb

需求:mysql、mssql、mongodb功能一样,都有add、delete、update、get方法(CURD)

注意:约束统一的规范、以及代码复用

解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型

  1. 接口:在面向对象编程中,接口是一种规范的定义,它定义了行为和动作的规范

  2. 泛型:通俗理解就是解决类、接口、方法的复用性

定义接口

interface IDB<T> {
    add(info: T): boolean;
    update(info: T, id: number): boolean;
    delete(id: number): boolean;
    get(id: number): any[];
}

定义一个操作mysql数据库的类(注意:要实现泛型接口,这个类也应该是一个泛型类)

class MySqlDBHelper<T> implements IDB<T>{
    // 构造函数
    constructor() {
        // 具体实现略...
        console.log(`建立与MySql数据库的连接!`);
    }
    add(info: T): boolean {
        console.log(info);
        console.log('mysql增加成功');
        // 具体实现略...
        return true;
    }
    update(info: T, id: number): boolean {
        console.log(info);
        console.log(`mysql[${id}]修改成功`);
        // 具体实现略...
        return true;
    }
    delete(id: number): boolean {
        console.log(id);
        console.log(`mysql[${id}]删除成功`);.
        // 具体实现略...
        return true;
    }
    get(id: number): any[] {
        console.log(id);
        console.log(`获取mysql数据id[${id}]成功`);
        // 具体实现略...
        let list=[
            {
                id:id,
                title:'aaa',
                desc:'aaaaaa'
            }
        ]
        return list;
    }
}

定义一个操作mssql数据库的类

class MsSqlDBHelper<T> implements IDB<T>{
    // 构造函数
    constructor() {
        // 具体实现略...
        console.log(`建立与MsSqlD数据库的连接!`);
    }
    add(info: T): boolean {
        console.log(info);
        console.log('mssql增加成功');
        // 具体实现略...
        return true;
    }
    update(info: T, id: number): boolean {
        console.log(info);
        console.log(`mssql[${id}]修改成功`);
        // 具体实现略...
        return true;
    }
    delete(id: number): boolean {
        console.log(id);
        console.log(`mssql[${id}]删除成功`);
        // 具体实现略...
        return true;
    }
    get(id: number): any[] {
        console.log(id);
        console.log(`获取mssql数据id[${id}]成功`);
        // 具体实现略...
        let list=[
            {
                id:id,
                title:'bbb',
                desc:'bbbb'
            }
        ]
        return list;
    }
}

定义一个操作mongodb数据库的类

class MongoDBHelper<T> implements IDB<T>{
    // 构造函数
    constructor() {
        // 具体实现略...
        console.log(`建立与MongoDB数据库的连接!`);
    }
    add(info: T): boolean {
        console.log(info);
        console.log('mongodb增加成功');
        // 具体实现略...
        return true;
    }
    update(info: T, id: number): boolean {
        console.log(info);
        console.log(`mongodb[${id}]修改成功`);
        // 具体实现略...
        return true;
    }
    delete(id: number): boolean {
        console.log(id);
        console.log(`mongodb[${id}]删除成功`);
        // 具体实现略...
        return true;
    }
    get(id: number): any[] {
        console.log(id);
        console.log(`获取mongodb数据id[${id}]成功`);
        // 具体实现略...
        let list=[
            {
                id:id,
                title:'ccc',
                desc:'cccccc'
            }
        ]
        return list;
    }
}

操作用户表 ,定义一个user类与mysql数据库表映射

lass User {
    username: string | undefined;
    password: string | undefined;
}
let u=new User();
u.username='张三';
u.password='123456';
let mysqlDb=new MySqlDBHelper<User>();// 类作为参数类约束传入数据的类型
mysqlDb.add(u);
mysqlDb.update(u,1);
mysqlDb.delete(2);
console.log(mysqlDb.get(777));
// 换成了mssql数据库
let mssqlDb=new MsSqlDBHelper<User>();
mssqlDb.add(u);
mssqlDb.update(u,1);
mssqlDb.delete(2);
console.log(mssqlDb.get(888));
// 换成mongodb数据库
let mongodb=new MongoDBHelper<User>();
mongodb.add(u);
mongodb.update(u,1);
mongodb.delete(2);
console.log(mongodb.get(999));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值