参考链接
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/go-sql-driver/mysql"
"log"
)
type UserInfo struct{
gorm.Model
UserName string `gorm:"size:255;column:username"`
Password string `gorm:"size:255;column:password"`
}
// 设置表名
func (UserInfo) TableName() string{
return "user_info"
}
func main(){
// 连接数据库
//"user:password@/dbname?charset=utf8&parseTime=True&loc=Local"
db, err := gorm.Open("mysql", "root:111111@/test?charset=utf8&parseTime=True&loc=Local")
if err != nil{
log.Println("err->", err)
}
defer db.Close()
// 不存在表则自动生成
if !db.HasTable(&UserInfo{}){
db.AutoMigrate(&UserInfo{})
log.Println("create table...")
}
// 创建数据
user := UserInfo{UserName:"admin", Password:"111111"}
db.NewRecord(user)
db.Create(&user)
if ! db.NewRecord(user){
fmt.Println("create ok")
}else{
fmt.Println("create fail")
}
// 普通查询
//select_data(db)
// 条件查询
//where_select(db)
// 更新全部字段
//update_all(db)
// 更新某个字段
//update(db)
// 删除指定数据
//delete(db)
// 删除符合条件的所有数据
//delete_all(db)
}
// 查询数据
func select_data(db *gorm.DB){
// 获取第一条记录,按主键排序
var u_first UserInfo
db.First(&u_first)
fmt.Println(u_first.UserName)
fmt.Println(u_first.Password)
// 查询最后一条数据
var u_last UserInfo
db.Last(&u_last)
fmt.Println(u_last.UserName)
fmt.Println(u_last.Password)
// 查询所有记录
var users []UserInfo
db.Find(&users)
for _, val := range users{
fmt.Println(val.UserName)
fmt.Println(val.Password)
}
// 使用主键获取记录
var user_pk UserInfo
db.First(&user_pk, 1)
fmt.Println(user_pk.UserName)
fmt.Println(user_pk.Password)
}
// 条件查询
func where_select(db *gorm.DB){
// 获取第一个匹配记录
var user UserInfo
db.Where("username=?", "admin").First(&user)
fmt.Println(user.UserName)
fmt.Println(user.Password)
// 获取所有匹配记录
var users []UserInfo
db.Where("username=?", "admin").Find(&users)
for _, v := range users{
fmt.Println(v.UserName)
fmt.Println(v.Password)
}
// 查询链
var u1 UserInfo
db.Where("username=?", "admin").Where("password=?", "222222").First(&u1)
fmt.Println(u1.UserName)
fmt.Println(u1.Password)
}
// 更新全部字段
func update_all(db *gorm.DB){
var user UserInfo
db.Where("username=?", "admin").First(&user)
user.UserName = "xiaoming"
user.Password = "xiaoming"
db.Save(&user)
}
// 更新某个字段
// 更新更改的字段,可以使用Update, Updates
func update(db *gorm.DB){
var user UserInfo
db.Where("username=?", "admin").Where("password=?", "222222").First(&user)
db.Model(&user).Update("username", "zhangsan")
fmt.Println(user.UserName)
fmt.Println(user.Password)
}
//软删除
// 删除记录时,需要确保其主要字段具有值,GORM将使用主键删除记录,如果主要字段为空,GORM将删除模型的所有记录
func delete(db *gorm.DB){
var user UserInfo
db.Where("username=?", "admin").Where("password=?", "999").First(&user)
db.Delete(&user)
}
// 删除所有匹配的数据, 软删除
func delete_all(db *gorm.DB){
db.Where("password LIKE ?", "%33%").Delete(UserInfo{})
}
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)
本文来自:简书
感谢作者:更多精彩内容free-programming-books六块腹肌数据记录:静阅读-列表-外国-page0书籍数据记录Golang GORM使用刘昊2018数据记录:静阅读-列表-外国-page5书籍数据记录无标题文章S_Lance
查看原文:golang gorm