GORM的简单使用
Posted ivy-blogs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GORM的简单使用相关的知识,希望对你有一定的参考价值。
gorm 的基本使用
×× http://gorm.book.jasperxu.com/ ×× 官方文档
安装
go get -u github.com/jinzhu/gorm
连接mysql
-
gorm连接mysql依赖mysql驱动,连接前需安装mysql驱动
github.com/go-sql-driver/mysql
-
单独连接示例
package database
import (
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"log"
"time"
)
var Db *gorm.DB
var Error error
func init() {
Db, Error = gorm.Open("mysql", "admin:qwe123@/bilibili")
if Error != nil {
log.Fatal("database connect failed
", Error.Error())
}
Db.LogMode(true) // 打印sql语句
Db.DB().SetMaxIdleConns(50) // 设置连接池
Db.DB().SetMaxOpenConns(50) // 设置最大连接数
Db.DB().SetConnMaxLifetime(time.Hour) // 设置最大连接超时
}
- 为了确保项目的完整进行,当项目初始化的时候,我们需要确保数据库连接正常,当数据库连接出错的时候,可以使用
log.Fatal
的方式来停止项目。
基本使用
"""
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| mid | int(11) | NO | PRI | NULL | |
| following | int(11) | NO | | NULL | |
| follower | int(11) | NO | | NULL | |
| name | varchar(255) | YES | | NULL | |
| face | varchar(200) | YES | | NULL | |
| leavel | smallint(6) | YES | | NULL | |
| sex | varchar(255) | YES | | NULL | |
| sign | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+
"""
- 测试表
简单操作
package main
import (
"fmt"
"fresh.com/database"
)
type User struct {
Mid int
Following int
Follower int
UserName string `gorm:"Column:name"`
}
func (u User) TableName() string {
return "user_info"
}
/*
1. 映射表的结构体的名将会被转换为表名,规则为:
(1): 单数变复数,如:User -> users, 有些会变成es结尾,按照英文的语法. 你可以通过Db.SingularTable(true)来禁用这一规则
(2): 大写变下划线, 如:UserDetails -> user_details
(3): 为结构体制定表名, 给该结构体设置一个成员方法`TableName`, 返回值为string即可
(4): 可以在查询的时候制定表名,如下所示"Table". 其余的时候该结构体的实例结构即可
(5): 制定列名,在结构体里面制定tag"gorm:Column:<你的表的列名>"即可
*/
func main() {
// 单条查询
user := &User{}
database.Db.Table("user_info").First(&user) // SELECT * FROM `user_info` LIMIT 1
fmt.Println(user.Mid)
// 多条查询
user_list := []User{}
database.Db.Table("user_info").Limit(10).Find(&user_list) // SELECT * FROM `user_info` LIMIT 10
fmt.Println(user_list)
// where 条件查询
database.Db.Table("user_info").Where("mid=?", 102).Find(&user) // SELECT * FROM `user_info` WHERE (mid=102)
fmt.Println(user)
// 执行原始的sql查询
raws, err := database.Db.Raw("SELECT COUNT(*) FROM user_info").Rows()
if err != nil {
fmt.Println(err)
}
for raws.Next() {
var mid int
raws.Scan(&mid)
fmt.Println(mid)
}
// 插入
insert_user := User{
Mid: 199624,
Follower: 25,
Following: 1234,
}
re := database.Db.Create(&insert_user).RowsAffected
fmt.Println(re) // 如果插入成功,单挑插入返回1,失败则返回0
// 更新
database.Db.Table("user_info").Where("mid=?", 199624).Update("name", "ivy")
database.Db.Model(&user).Where("mid=?", 199624).Update("name", "BOB")
}
以上是关于GORM的简单使用的主要内容,如果未能解决你的问题,请参考以下文章