文章目录
学习资料:https://gorm.io/zh_CN/docs/ 中文文档
hexo链接:https://woaixiaoyuyu.github.io/2020/03/20/GORM-note/#more
创建与查询的基本操作
基本的范畴我自己定的233,有一些地方为了避免多次运行注释掉了,我自己是看得懂的,如果你迷茫了,对不起,我只记录一些自己看文档的时候踩得坑
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
// UserInfo create对应用户表的结构体
type UserInfo struct {
ID int // 一定要大写字母开头,不然无法创建处这个字段
Age int
Name *string `gorm:"default:'galeone'"` //给一个默认值,但可以传入空串
Gender string
}
func main() {
// 打开mysql中名为go_test的数据库
db, err := gorm.Open("mysql", "root:xiaoyuyu@/go_test?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("failed to connect database")
}
defer db.Close()
// create table
db.AutoMigrate(&UserInfo{
})
// create data
str := new(string)
*str = "xiaoyuyu"
u1 := UserInfo{
1, 18, str, "male"}
//u2 := UserInfo{Age: 22, Name: new(string), Gender: "male"}
//u3 := UserInfo{Age: 25, Gender: "female"}
//fmt.Println(u3.Name)
db.Create(&u1)
// ok := db.NewRecord(u2) // 检查创建的当前字段的PRI key 是否存在
// if !ok {
// fmt.Println("PRI key has been used")
// } else {
// db.Create(&u2)
// }
// //fmt.Println(ok)
// ok = db.NewRecord(u3)
// if !ok {
// fmt.Println("PRI key has been used")
// } else {
// db.Create(&u3)
// }
//fmt.Println(ok)
// 查询
user := UserInfo{
}
// 根据主键查询第一条记录,查询出来的保存到对象user中
db.First(&user)
SELECT * FROM users ORDER BY id LIMIT 1;
fmt.Println(user.ID, *user.Name, user.Age, user.Gender)
// 如果不重新定义一个空结构体,之前的查询条件会累加到现存的查询上
user = UserInfo{