一、TypeScript封装统一操作Mysql、Mongodb、Mssql的底层类库

  • 功能:定义一个操作数据库的库支持Mysql、Mssql、MongoDb
  • 要求1:Mysql、Mssql、MongoDb功能一样都有add、update、delete、get方法
  • 注意:约束统一的规范、以及代码重用
  • 解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型
  • 1、接口:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范
  • 2、泛型 通俗理解:泛型就是解决类接口方法的复用性 ```typescript // 1.定义接口泛型接口规则 interface DBI { add(info: T): boolean; update(info: T, id: number): boolean; delete(id: number): boolean; get(id: number): any[]; }

// 2.定义一个操作mysql数据库的类,注意:要实现泛型接口 这个类也应该是一个泛型类 class MysqlDb implements DBI{ constructor() { console.log(‘数据库建立连接’); } add(info: T): boolean { console.log(info); return true; } update(info: T, id: number): boolean { throw new Error(“Method not implemented.”); } delete(id: number): boolean { throw new Error(“Method not implemented.”); } get(id: number): any[] { var list = [ { title: ‘xxxx’, desc: ‘xxxxxxxxxx’ }, { title: ‘xxxx’, desc: ‘xxxxxxxxxx’ } ] return list; } }

// 3.定义一个操作mssql数据库的类 class MsSqlDb implements DBI{ constructor() { console.log(‘数据库建立连接’); } add(info: T): boolean { console.log(info); return true; } update(info: T, id: number): boolean { throw new Error(“Method not implemented.”); } delete(id: number): boolean { throw new Error(“Method not implemented.”); } get(id: number): any[] { var list = [ { title: ‘xxxx’, desc: ‘xxxxxxxxxx’ }, { title: ‘xxxx’, desc: ‘xxxxxxxxxx’ } ] return list; } }

// 4.操作用户表,定义一个User类和数据表做映射 class User { username: string | undefined; password: string | undefined; } var u = new User(); u.username = ‘张三111’; u.password = ‘123456’; var oMysql = new MysqlDb(); // 类作为参数来约束数据传入的类型 oMysql.add(u);

// 5.获取User表 ID=4的数据 var data = oMysql.get(4); console.log(data); ```