| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package main
- import (
- "fmt"
- "log"
- "net/url"
- "os"
- "standard/mysql/select/model"
- "time"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- "gorm.io/gorm/schema"
- )
- func main() {
- dsn := fmt.Sprintf("%s?charset=utf8&parseTime=True&loc=Local&time_zone=%s", "root:miuye123456@tcp(miuyun)/core", url.QueryEscape("'UTC'"))
- newLogger := logger.New(
- log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
- logger.Config{
- SlowThreshold: time.Second, // 慢 SQL 阈值
- LogLevel: logger.Silent, // Log level
- Colorful: false, // 禁用彩色打印
- },
- )
- db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: newLogger, QueryFields: true, NamingStrategy: schema.NamingStrategy{
- TablePrefix: "t_", // 表前缀
- SingularTable: false, // 复数形式
- }},
- )
- if err != nil {
- log.Fatal("init mysql db failed, err: ", err.Error())
- return
- }
- ChildQuery(db)
- }
- func ChildQuery(db *gorm.DB) {
- var user []model.User
- // 查询余额大于平均值的用户
- db.Debug().Where("amount > (?)", db.Model(&model.User{}).Select("AVG(amount)")).Find(&user)
- for _, u := range user {
- fmt.Println(u)
- }
- fmt.Println()
- }
- func SelectTest(db *gorm.DB) {
- // 通过较小的结构体进行select
- var allUser []model.User
- err := db.Debug().Model(&model.User{}).Limit(2).Find(&allUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- var simpleUser []model.UserSimple
- err = db.Debug().Model(&model.User{}).Limit(2).Find(&simpleUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- err = db.Debug().Model(&model.User{}).Select("id", "code", "user_name", "password").Limit(2).Find(&allUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- // select所有字段
- fmt.Println("select所有字段")
- //QueryFields 模式会根据当前 model 的所有字段名称进行 select
- err = db.Debug().Model(&model.User{}).Session(&gorm.Session{QueryFields: true}).Limit(2).Find(&simpleUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- err = db.Debug().Session(&gorm.Session{QueryFields: true}).Limit(2).Find(&allUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- // 需要指定 Table或 Model
- err = db.Debug().Table("t_users").Session(&gorm.Session{QueryFields: true}).Limit(2).Find(&simpleUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- err = db.Debug().Session(&gorm.Session{QueryFields: true}).Limit(2).Find(&simpleUser).Error
- if err != nil {
- log.Fatal(err.Error())
- }
- }
|