日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

业精于勤荒于嬉---Go的GORM查询

發布時間:2023/11/29 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 业精于勤荒于嬉---Go的GORM查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查詢

//通過主鍵查詢第一條記錄 db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 隨機取一條記錄 db.Take(&user)SELECT * FROM users LIMIT 1;// 通過主鍵查詢最后一條記錄 db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 拿到所有的記錄 db.Find(&users)SELECT * FROM users;// 查詢指定的某條記錄(只可在主鍵為整數型時使用) db.First(&user, 10)SELECT * FROM users WHERE id = 10;

Where 條件

普通 SQL

// 獲取第一條匹配的記錄 db.Where("name = ?", "jinzhu").First(&user)SELECT * FROM users WHERE name = 'jinzhu' limit 1;// 獲取全部匹配的記錄 db.Where("name = ?", "jinzhu").Find(&users)SELECT * FROM users WHERE name = 'jinzhu';// <> db.Where("name <> ?", "jinzhu").Find(&users)// IN db.Where("name IN (?)", []string{"jinzhu", "jinzhu 2"}).Find(&users)// LIKE db.Where("name LIKE ?", "%jin%").Find(&users)// AND db.Where("name = ? AND age >= ?", "jinzhu", "22").Find(&users)// 時間 db.Where("updated_at > ?", lastWeek).Find(&users)// BETWEEN db.Where("created_at BETWEEN ? AND ?", lastWeek, today).Find(&users)

Struct & Map

// Struct db.Where(&User{Name: "jinzhu", Age: 20}).First(&user)SELECT * FROM users WHERE name = "jinzhu" AND age = 20 LIMIT 1;// Map db.Where(map[string]interface{}{"name": "jinzhu", "age": 20}).Find(&users)SELECT * FROM users WHERE name = "jinzhu" AND age = 20;// 主鍵的切片 db.Where([]int64{20, 21, 22}).Find(&users)SELECT * FROM users WHERE id IN (20, 21, 22);

提示 當通過結構體進行查詢時,GORM將會只通過非零值字段查詢,這意味著如果你的字段值為0,'', false 或者其他 零值時,將不會被用于構建查詢條件,例如:

db.Where(&User{Name: "jinzhu", Age: 0}).Find(&users)SELECT * FROM users WHERE name = "jinzhu";

你可以使用指針或實現 Scanner/Valuer 接口來避免這個問題.

// 使用指針 type User struct {gorm.ModelName stringAge *int }// 使用 Scanner/Valuer type User struct {gorm.ModelName stringAge sql.NullInt64 // sql.NullInt64 實現了 Scanner/Valuer 接口 }

選擇字段

Select,指定你想從數據庫中檢索出的字段,默認會選擇全部字段。

db.Select("name, age").Find(&users)SELECT name, age FROM users;db.Select([]string{"name", "age"}).Find(&users)SELECT name, age FROM users;db.Table("users").Select("COALESCE(age,?)", 42).Rows()SELECT COALESCE(age,'42') FROM users;

轉載于:https://www.cnblogs.com/Paul-watermelon/p/11445388.html

總結

以上是生活随笔為你收集整理的业精于勤荒于嬉---Go的GORM查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。