定义一个User的类,这个类的作用就是映射数据库字段
然后定义一个MysqlDb的类这个类用于操作数据库
然后把User类作为参数传入到Mysql中
- 定义一个User类
class User{
username:string|undefined
password:string|undefined
}
- 定义一个MysqlDb类
class MysqlDb{
add(user:User):boolean{
return true
}
}
- 创建一个User的实例,并向MysqlDb添加该实例
var u = new User()
u.username = '张三'
u.password = '123456'
var Db = new MysqlDb()
Db.add(u)
这个例子就完成了,但是如果想在MysqlDb添加另外一个类的实例呢?此时就要再写一遍,代码冗余
class ArticleCate{
title:string|undefined
desc:string|undefined
status:number|undefined
}
class MysqlDb{
add(info:ArticleCate):boolean{
return true
}
}
var a = new ArticleCate()
a.title = "国内"
a.desc = "国内新闻"
a.status = 1
var Db = new MysqlDb()
Db.add(a)
解决方法,使用泛型类
// 操作数据库的泛型类
class MysqlDb<T>{
add(info:T):boolean{
return true
}
}
// 想给User表增加数据
// 1.定义一个User类 和数据库进行映射
class User{
username:string|undefined
password:string|undefined
}
var u = new User()
u.username = '张三'
u.password = '123456'
var Db = new MysqlDb<User>()
Db.add(u)
// 2.定义一个ArticleCate类 和数据库进行映射
class ArticleCate{
title:string|undefined
desc:string|undefined
status:number|undefined
constructor(params:{
title:string|undefined
desc:string|undefined
status?:number|undefined
}){
this.title = params.title
this.desc = params.desc
this.status = params.status
}
}
var a = new ArticleCate({
title:'分类',
desc:'111'
})
var Db2 = new MysqlDb<ArticleCate>()
Db2.add(a)