首页 > 编程知识 正文

golang 数据库框架,golang 库

时间:2023-05-06 02:14:37 阅读:274956 作者:1510

文档地址

数据模型 //Account 储存数据结构type Account struct {ID int `gorm:"primary_key"`AccountIP string `gorm:"type:varchar(100);not null"`AccountNum int32 `gorm:"type:int;not null"`AccountDateFirst time.TimeAccountDate time.Time} 1. 引入 github.com/go-sql-driver/mysql

Gopkg.toml 中添加:

[[constraint]]
name = “github.com/go-sql-driver/mysql”
version = “1.0.0”

下载依赖包

dep ensure -update

2. 创建数据库连接 package dbimport ("fmt""github.com/jinzhu/gorm""time")var (dbhostsip string = "127.0.0.1:3306"dbusername string = "root"dbpassword string = "root"dbname string = "ysblog"maxOpenConns int = 200 //设置打开数据库连接的最大数量maxIDConns int = 10 //空闲时最大连接数量maxLifeTime time.Duration = time.Second * 10 // 连接过期时间 如不设置 连接会被一直保持)// DB 全局数据库使用变量var DB *gorm.DB//InitDB 初始化数据库func InitDB() {connStr := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=true&loc=Local&readTimeout=10s&timeout=10s", dbusername, dbpassword, dbhostsip, dbname)db, err := gorm.Open("mysql", connStr)if err != nil {fmt.Println("====>", err)return}db.DB().SetMaxOpenConns(maxOpenConns)db.DB().SetMaxIdleConns(maxIDConns)db.DB().SetConnMaxLifetime(maxLifeTime)DB = db} 3. 创建表 func main() {db.InitDB()//初始化数据库连接db.CreateTable(db.Account{}) //创建表}//CreateTable 创建表func CreateTable(table interface{}) {if !DB.HasTable(table) {if err := DB.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8").CreateTable(table).Error; err != nil {panic(err)}}} 4. 插入数据 func main() {db.InitDB() //初始化数据库连接db.CreateTable(db.Account{}) //创建表insert := db.Account{AccountIP: "127.0.0.2",AccountNum: 0,AccountDateFirst: utils.GetCurrentTime(),AccountDate: utils.GetCurrentTime(),}result := db.Account{}err := db.Select(db.Account{AccountIP: "127.0.0.2"}, db.Account{}, &result)if err != nil {db.Insert(&insert) //插入数据}}//Insert 插入数据func Insert(table interface{}) error {if err := DB.Create(table).Error; err != nil {return err}return nil} 5. 删除数据 func main() {db.InitDB() //初始化数据库连接db.CreateTable(db.Account{}) //创建表db.Delete(db.Account{ID: 5}, db.Account{})}//Delete 删除数据func Delete(d interface{}, table interface{}) error {if err := DB.Where(d).Delete(table).Error; err != nil {return err}return nil} 6. 修改数据 func main() {db.InitDB() //初始化数据库连接db.CreateTable(db.Account{}) //创建表db.Update(db.Account{AccountNum: 5}, db.Account{ID: 7})}//Update 修改数据func Update(d interface{}, table interface{}) {DB.Model(table).Updates(d)} 7. 查询一条数据 func main() {db.InitDB() //初始化数据库连接db.CreateTable(db.Account{}) //创建表result := db.Account{}err := db.Select(db.Account{AccountIP: "127.0.0.2"}, db.Account{}, &result)if err != nil {//db.Insert(&insert) //插入数据}}//Select 查询数据(一个)func Select(d interface{}, table interface{}, result interface{}) error {res := DB.Model(table).Where(d).First(result)return res.Error} 8. 查询所有数据 func main() {db.InitDB() //初始化数据库连接db.CreateTable(db.Account{}) //创建表 result := []db.Account{}count := db.SelectAll("ID<10", db.Account{}, &result)fmt.Println(count)}//SelectAll 查询所有数据 count计算查询数量func SelectAll(d interface{}, table interface{}, result interface{}) int {var count interr := DB.Model(table).Where(d).Count(&count).Find(result).Errorif err != nil {fmt.Println(err)}return count}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。