查询
🔶 常用
// 查询那个表
db.Model(&User{})
// 查询条件
db.Where("id = ?", 1)
// 查询总数
var total int64
db.Count(&total)
// 排序
db.Order("id desc")
// 每页获取多少数据
limit := 10
db.Limit(limit)
// 第几页
offset := 1
db.Offset(offset)
// 带着关联表的数据
db.Preload("Authority")
// 结果输出到那里
var userList userList{}
db.Find(&userList)
🔶 一对多Has Many
模型定义
// User 人
type User struct {
ID uint
Name string
Books []Book
}
// Book 书
type Book struct {
ID uint
BookName string
UserID uint
}
迁移 --创建表
db.AutoMigrate(&User{}, &Book{})
创建点数据
var book01 = Book{BookName: "三体"}
var book02 = Book{BookName: "鬼吹灯"}
var user = User{Name: "小辰", Books: []Book{book01, book02}}
var book03 = Book{BookName: "十万个为什么"}
var book04 = Book{BookName: "西游记"}
var book05 = Book{BookName: "语文课本"}
var user01 = User{Name: "小美", Books: []Book{book03, book04, book05}}
db.Create(&user)
db.Create(&user01)
查询案例
- 查询一个人并把他所有书的信息带出来
var u User db.Model(&User{}).Preload("Books").Find(&u, 2) fmt.Println(u) 打印结果: {2 小美 [{3 十万个为什么 2} {4 西游记 2} {5 语文课本 2}]} - 查询 一本书 并把书的主人信息查出来 -- 连表查询
和 sql语句 写法基本一样var books []struct { UserName string BookName string } db.Model(&Book{}). Select("user.name as user_name, book.book_name"). Joins("left join user on user.id = book.user_id"). Where("book.id = ? ", 4). Scan(&books) fmt.Println(books)