typescript封装统一操作的mysql,mongodb的底层库
功能:定义一个操作数据库的库,支持mysql、monbodb
要求:都有增删改查方法
约束统一的规范,以及代码的重用
解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型
接口:在面向对象编程中,接口是一种规范的定义,它定义了行为和动作的规范
泛型:通俗理解,泛型就是解决类、接口 、方法的复用性
interface DBI<T>{ //定义一个接口 add(info:T):boolean; update(info:T,id:number):boolean; delete(id:number):boolean; get(id:number):any[]; } //定义一个操作mysql的数据库的类 //注意:要实现泛型接口,这和类也应该是一个泛型类 class mysql<T> implements DBI<T>{ //数据库链接 constructor(){ } add(info: T): boolean { throw new Error("Method not implemented."); } 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:"****", password:"****" } ] return list } } //定义一个操作mysql的数据库的类 class mongodb<T> implements DBI<T>{ //数据库链接 constructor(){ } add(info: T): boolean { throw new Error("Method not implemented."); } 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[] { throw new Error("Method not implemented."); } } //操作用户表,定义一个user类和数据库表进行映射 class user { username:string|undefined; password:string|undefined; } var u= new user(); u.username="小明"; u.password="123456"; //类作为参数来约束数据传入的类型 var my=new mysql<user>(); //增加数据 my.add(u);