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、数字取证工具的使用