ts类型、接口、类、泛型综合使用----ts封装统一操作MySql、MongoDB、MsSql的底层类库
功能:定义一个操作数数据库的类库 支持mysql、mssql、mongodb
需求:mysql、mssql、mongodb功能一样,都有add、delete、update、get方法(CURD)
注意:约束统一的规范、以及代码复用
解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型
-
接口:在面向对象编程中,接口是一种规范的定义,它定义了行为和动作的规范
-
泛型:通俗理解就是解决类、接口、方法的复用性
定义接口
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));