go语言没有官方提供的数据库驱动,但是为第三方开发数据库驱动的人制定了一套标准接口,这样开发者就可以根据定义的接口来开发相应的数据库驱动。当然在开发中我们一般还是用orm框架得多,因为这样可以让我们事半功倍。
golang的orm框架很多,不用框架也能很顺利的对数据进行增删改查。但是在一些大型项目上框架还是少不了。这里用github.com/go-sql-driver/mysql驱动和github.com/jinzhu/gorm框架举例。
由于我在项目中一直是用的gorm框架,觉得这个框架还是挺强大和高效灵活的,首先介绍一下gorm的基本用法。
1.首先导入驱动包以及gorm库。
import(
"github.com/jinzhu/gorm"
_"github.com/go-sql-driver/mysql"
"fmt"
"time"
//log "github.com/code.google.com/log4go"
)
2.接下来我们建立一个和数据库映射的结构体,其中字段后面的tag就是数据库中对应的列,也即是和字段和列映射起来。下面建立一个UserInfo的结构体。
typeUserInfostruct{
Id int`gorm:"column:id" json:"id"`
Name string`gorm:"column:name" json:"name"`
Phone string`gorm:"column:phone" json:"phone"`
CreatedTime time.Time`gorm:"column:created_time" json:"created_time"`
CreatedUser string`gorm:"column:created_user" json:"created_user"`
}
3.接下来就是打开数据库连接,获取*DB对象,然后进行一些操作,注意获取到的一直都是*DB对象,也就是一种链式编程的效果,这让我们可以一直拥有这个对象而不用另附变量。所以可以一直db.Table().Find().Error()调用下去,下面是一个简单的查询例子。
funcmain() {
dbHost:="user:password@tcp(127.0.0.1:3306)/test?"+
"charset=utf8&&parseTime=True&loc=Local"
db, err := gorm.Open("mysql", dbHost)
iferr != nil {
fmt.Println("数据库链接异常")
}
varuserInfos []UserInfo
db.LogMode(true)//打印SQL语句
err1:=db.Table("user_info").Find(&userInfos).Error
iferr1!=nil{
fmt.Printf("查询出错%s",err1.Error())
}
for_,v:=rangeuserInfos{
fmt.Printf("userInfos:%#v",v)
}
}
题图来源于百度图片
优质内容筛选与推荐>>
1、NX二次开发-直线分析函数UF_EVAL_ask_line与NXOpen::Line直线分析的用法
2、钥匙
3、linux基础学习-8.2-查看端口是否开启的命令
4、<<UML大战需求分析>>阅读笔记(2)
5、数字取证工具的使用