在前面《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语言的开发习惯。
最后按照惯例,附上本案例的远吗,登录后即可下载。

还没有评论,来说两句吧...