在前面《Go语言Web开发系列(十三)Gin web框架操作mysql存储案例》我们使用的是传统的jdbc模式操作mysql的数据。对于做java开发的同学来说,目前接触到的比较多的都是利用orm框架来操作mysql,所以这样的开发习惯也可以应用到go语言中,在go语言中使用比较多的就是利用gorm来实现简单便捷的sql操作。本文我们来演示一下。
一、定义sql的配置
这里的话我们引入mysql和gorm,做一些数据库连接,关闭等方法的初始化,示例代码如下:
package conf import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) var SqlSession *gorm.DB var err error func InitMysql() { dsn := "root:123456@tcp(192.168.31.217:33306)/test?charset=utf8mb4&parseTime=True&loc=Local" //连接数据库 SqlSession, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic(err) } } func DestroyMysql() { sqlDB, err := SqlSession.DB() if err != nil { fmt.Println(err) } sqlDB.Close() }
二、编写操作sql的service
import ( "demo1/src/conf" "demo1/src/model" ) /* * 获取所有用户 */ func GetAllUser() (userList []*model.User, err error) { if err := conf.SqlSession.Find(&userList).Error; err != nil { return nil, err } return } /* * 根据查询条件获取用户 */ func GetUserById(id string) (user *model.User, err error) { if err := conf.SqlSession.Where("id", id).First(&user).Error; err != nil { return nil, err } return } /* * 查询id>1的所有用户 */ func GetUsersById(id string) (user []*model.User, err error) { err = conf.SqlSession.Raw("SELECT * FROM users WHERE id > ?", id).Scan(&user).Error if err != nil { return nil, err } return } /* * 修改用户信息 */ func UpdateUserById(user *model.User) (err error) { //相当于 update users set password = ?,nickname = ? where id = ?,这条语句主要是根据id进行更新的,也就是主键 err = conf.SqlSession.Model(&user).Select("password", "nickname").Updates(map[string]interface{}{"password": user.Password, "nickname": user.Nickname}).Error if err != nil { return err } return } /* * 删除用户信息 */ func DeleteUserById(id string) (err error) { //根据主键删除,这里假设删除id=2的用户 // err = conf.SqlSession.Delete(&model.User{}, id).Error //根据条件删除 err = conf.SqlSession.Where("id > ?", id).Delete(&model.User{}).Error //传递多个id //err = conf.SqlSession.Delete(&model.User{}, []int{1, 2, 3}).Error if err != nil { return err } return }
这里的示例代码我们实现对数据库的增删改查操作。可以看到这里操作数据库的话几乎和java语言中使用orm框架操作数据库的方式差不多,这也方便java开发人员快速的适应go语言的开发习惯。
最后按照惯例,附上本案例的远吗,登录后即可下载。
还没有评论,来说两句吧...