当前位置: 首页 > 工具软件 > GoMySQL > 使用案例 >

go mysql orm_go语言操作MySql数据库(原生与ORM方式)

冯旭
2023-12-01

一.原生方式

golang其实官方不提供连接mysql实现,先下载第三方的实现

https://github.com/golang/go/wiki/SQLDrivers

该地址可以看到所以的驱动包.这里选择了Go-MySQL-Driver这个实现

使用如下命令即可

go get github.com/go-sql-driver/mysql

1.连接数据库

conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/king")

defer conn.Close()

2.新增数据

func doInsert(conn *sql.DB){

fmt.Println("开始插入数据")

res ,err:= conn.Exec("INSERT INTO user(userName, passWord) VALUES (?, ?)","测试1","123456")

utils.DoError("插入失败:",err)

fmt.Println(res)

}

ps:修改/删除语句都走conn.Exec(sql)方法实现

3.查询数据

func doQuerry(conn *sql.DB){

fmt.Println("开始查询数据")

data,err := conn.Query("SELECT userName from user")

utils.DoError("sql.Query",err)

if err == nil{

var userName string

for data.Next() {

data.Scan(&userName)

logs.Error(userName)

}

}

}

二.ORM方式

Beego中内嵌了ORM框架,用来操作数据库。它的灵感主要来自 Django ORM 和 SQLAlchemy。

也就是已bean的方式操作数据库,无需再写sql

1.初始化

1.1注册数据库表

用orm.RegisterModel()函数,参数是结构体对象,如果有多个表,可以用 , 隔开,多new几个对象:

orm.RegisterModel(new(User),new(Person))

1.2 生成表

orm.RunSyncdb("default",false,true)

参数一:数据库别名,和RegisterDataBase定义别名对应

参数二:是否强制更新,true的话会清除数据库新建

参数三:生成表过程是否可见(log显示sql)

1.3 示例

首先我们先定义一个bean,并将数据库连接初始化操作写在init方法中

package models

import "github.com/astaxie/beego/orm"

type User struct {

Id int

Name string

PassWord string

}

func init() {

//1.连接数据库

orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/king")

//2.注册表

orm.RegisterModel(new(User))

//3.生成表

orm.RunSyncdb("default",false,true)

}

2.增删改查操作

2.1插入数据

func doInsertOrm() {

fmt.Println("开始doQuerryOrm")

//1.定义一个orm对象

o := orm.NewOrm()

var user models.User

//定义要插入的bean

user.Name = "king"

user.PassWord = "668899"

id, err := o.Insert(&user)

utils.DoError("orm插入错误", err)

if err == nil {

fmt.Println("插入成功_id:", id)

}

}

2.2查询数据

func doQueryOrm() (user *models.User){

o := orm.NewOrm()

//查询操作

user.Name = "king"

err := o.Read(&user, "name")

utils.DoError("orm查询错误", err)

fmt.Println(user)

return

}

2.3更新操作

func doUpdateOrm(user *models.User) {

o := orm.NewOrm()

//更新操作 --需要先查询

user.PassWord = "xiugai"

count, err := o.Update(&user)

utils.DoError("orm更新错误", err)

fmt.Println("orm更新成功条目数量:", count)

}

2.4 删除操作

func doDeleteOrm(user *models.User) {

o := orm.NewOrm()

//更新操作 --需要先查询

count, err := o.Delete(&user)

utils.DoError("orm更新错误", err)

fmt.Println("orm更新成功条目数量:", count)

}

 类似资料: