因为本次项目是在MVC三层结构基础上进行开发,(ps:三层架构是指:视图层Vew、服务层Service、持久层Dao)连接数据库就放到了Dao层中,这种结构可以更好的降低各层间的耦合度,即上层对下层的调用,是通过接口实现的,这就实现了层间解耦合。
本次实现的Dao层功能是视频点赞模块,分成步骤来看,首先Go语言要进行结构体的创建,这个官方已经给了对应的接口,不用自己创建。
单例模式(Singleton Pattern)的定义为:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在Go语言中创建Dao层type结构体
接下来引入对应结构体的对象以及单利模式中的sync.Once
在Go代码中引入GORM库和MySQL驱动
然后,我们需要设置MySQL连接的参数,包括数据库地址、用户名、密码和数据库名等
Sync.Once 是 Go 语言中的一种同步原语,用于确保某个操作或函数在并发环境下只被执行一次。它只有一个导出的方法,即 Do,该方法接收一个函数参数。在 Do 方法被调用后,该函数将被执行,而且只会执行一次,即使在多个协程同时调用的情况下也是如此。
最后在Go语言中进行方法的创建
上述代码中,newlikedao 函数通过 once.Do() 确保 like_Daos 只会被初始化一次。在并发环境下,多个协程同时调用 like_Daos 时,只有一个协程会执行 like_Daos_Once = &like_Daos_Instance{},所有协程得到的实例 like_Daos_Instance 都是同一个。
然后通过gorm的Open方法进行数据库基础连接,这里的err也可以不返回,但是为了确认连接是否成功,最好把它加上,在用完之后,一定要进行关闭。
可以使用AutoMigrate方法进行表的自动查询以及创建工作。