gorm-查询记录
首先先连接Mysql
package main
import (
"fmt"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var db *gorm.DB
func init() {
dsn := "root:123456@tcp(127.0.0.1:3306)/golang_test?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db = d
}
type User struct {
gorm.Model
Name string
Age int
Birthday time.Time
}
func CreateTables() {
db.AutoMigrate(&User{})
}
进行简单的查询
func select2() {
// select * from users where id = 3
db.First(&user, 3)
fmt.Printf("user.ID: %v\n", user.Name)
// select * from users where id = 3
db.First(&user, "3")
fmt.Printf("user.ID: %v\n", user.Name)
var users []User
db.Find(&users, []int{1, 2, 3})
for _, user := range users {
fmt.Printf("user.ID: %v\n", user.Name)
}
}
RowsAffected查询记录条数
var users []User
func select3() {
result := db.Find(&users)
fmt.Printf("result.RowsAffected: %v\n", result.RowsAffected)
}
条件查询
func select4() {
// 条件查询
// 获取第一条匹配的记录
db.Where("name=?", "krien").First(&user)
fmt.Printf("user.ID: %v\n", user.ID)
// select * from users where name = "krien" order by id limit 1;
// 获取全部匹配的记录
db.Where("name <> ?", "tom").Find(&users)
// select * from users where name <> "tom";
//IN
db.Where("name IN ?", []string{"krien", "kiki"}).Find(&users)
// select * from users where name in ("krien","kiki");
// LIKE
db.Where("name LIKE ?", "%k%").Find(&users)
// select * from users where name like '%k%';
// AND
db.Where("name = ? AND age >= ?", "krien", "18").Find(&users)
// select * from users where name = "krien" and age = 18;
// Time
db.Where("updated_at > ?", "2020-01-01").Find(&users)
// select * from users where updated_at > '2020-01-01';
}
Struck&Map 条件
当结构体作为条件查询时,gorm只会查询非零值字段/这意味着如果你的字段值为“0”,false或其他零值,该字段不会用于构建查询条件
如果想要包含零值查询,可以用Map
func select5() {
//Struct
db.Where(&User{Name: "krien", Age: 20}).First(&user)
// select * from users where name = "krien" and age = 20 order by id limit 1
// Map
db.Where(map[string]interface{}{"name": "krien", "age": 20}).Find(&users)
// select * from users where name = "krien" and age = 20
// 主键切片条件
db.Where([]int64{20, 21, 22}).Find(&users)
}
文章展示了如何使用GORM库在Go语言中连接到MySQL数据库,创建表,以及执行各种查询操作,包括按ID选择记录,条件查询,LIKE,IN,AND操作符,时间条件和使用结构体及Map作为查询条件。
1522

被折叠的 条评论
为什么被折叠?



