可以添加一个repository来访问数据可以通过以下方法来做:
1,先在/Users/code/gopath/src/study/gorm/db.go
添加以下代码:
package mysqltools
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"log"
"sync"
)
/*
* MysqlConnectionPool
* 数据库连接操作库
* 基于gorm封装开发
*/
type MysqlConnectionPool struct {
}
var instance *MysqlConnectionPool
var once sync.Once
var db *gorm.DB
var errDB error
func GetInstance() *MysqlConnectionPool {
once.Do(func() {
instance = &MysqlConnectionPool{}
})
return instance
}
/*
* @fuc 初始化数据库连接(可在mail()适当位置调用)
*/
func (m *MysqlConnectionPool) InitDataPool() (isSuccess bool) {
db, errDB = gorm.Open(
"mysql",
"root:root@tcp(localhost:3306)/default?charset=utf8&parseTime=True&loc=Local")
fmt.Println(errDB)
if errDB != nil {
log.Fatal(errDB)
return false
}
//关闭数据库,db会被多个goroutine共享,可以不调用
// defer db.Close()
return true
}
/*
* @fuc 对外获取数据库连接对象db
*/
func (m *MysqlConnectionPool) GetMysqlDB() (dbCon *gorm.DB) {
return db
}
2,在/Users/code/gopath/src/study/model/student.go
添加repository(现在和model一起)
package studentModel
import (
"errors"
"study/gorm"
)
type Student struct {
//gorm.Model
Id int `gorm:"primary_key;auto_increment"`
Telephone string
FirstName string
LastName string
}
type Interface interface {
SelectById(id int64) (stu Student, err error)
}
type StudentRepository struct {
Interface
}
func (r *StudentRepository) SelectById(id int64) (stu []Student, err error) {
// select
var userRet []Student
db := mysqltools.GetInstance().GetMysqlDB()
// 使用id获取记录
e := db.Where("id = ?", id).First(&userRet).Error
if e != nil {
return userRet, errors.New("查询失败")
}
return userRet, nil
}
3,然后在/Users/code/gopath/src/study/test/abc.go
里添加如下代码:
package main
import (
"fmt"
"log"
"os"
"study/gorm"
"study/model"
)
func init() {
// init database pool
isSuccess := mysqltools.GetInstance().InitDataPool()
if !isSuccess {
log.Println("init database pool failure...")
os.Exit(1)
}
}
func main() {
stu := studentModel.StudentRepository{}
data, err := stu.SelectById(1)
if err != nil {
fmt.Println(err);
}
fmt.Println(data)
}
4,这样子就可以了,在/Users/code/gopath/src/study/test
跑下go run abc.go
,会看到以下结果:
<nil>
[{1 11 LejuRobot test}]
一些说明:
gopath目录: GOPATH="/Users/code/gopath"
,这个大家对应着看.
搜索
标签
study
ab
amap
apache
apahe
awk
aws
bat
centos
CFS
chrome
cmd
cnpm
composer
consul
crontab
css
curl
cygwin
devops
di
docker
docker,docker-compose
ethereum
excel
fiddler
fluentd
framework
front-end
git
gitgui
github
glide
go
golang
gorm
grafana
gzip
ioc
item2
iterm2
javascript
jenkins
jsonp
kafka
laradock
laravel
larval
linux
liunux
log
mac
mac, wi-fi
macos
magento
mariaDB
minikube
mongoDB
msp
mysql
netbeans
nginx
nodejs
nohup
npm
nsq
oracle
php
php-fpm
php7
phpstorm
php扩展
Protobuf
python
redis
scp
server
shell
soap
socket
socket5
sql
sre
ssdb
ssh
ssl
study
sublime
swift
system
td-agent
uml
v2ray
vagrant
vagrnat
vim
vpn
vue
vue.js
webpack
webrtc
websocket
webtatic
windows
windows7
word
wps
xdebug
yarn
yii2
yum
zookeeper
世界国家
互联网
以太坊
分类
前端
小程序
打印机
排序算法
搞笑
权限
粤语
缓存
网络
虚拟机
视频
设计模式
项目管理
热门文章
友情链接