gin-base/db/core/omit_example.go

47 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package core
import (
"fmt"
)
// ExampleQueryBuilder_Omit 演示 Omit 方法的使用
func ExampleQueryBuilder_Omit() {
// 定义用户模型
type User struct {
ID int64 `json:"id" db:"id"`
Name string `json:"name" db:"name"`
Email string `json:"email" db:"email"`
Password string `json:"password" db:"password"`
Status int `json:"status" db:"status"`
}
// 创建 Database 实例(示例中使用 nil实际使用需要正确初始化
db := &Database{}
// 示例 1: 排除敏感字段(如密码)
q1 := db.Model(&User{}).Omit("password")
sql1, _ := q1.(*QueryBuilder).BuildSelect()
fmt.Printf("排除密码:%s\n", sql1)
// 示例 2: 排除多个字段
q2 := db.Model(&User{}).Omit("password", "status")
sql2, _ := q2.(*QueryBuilder).BuildSelect()
fmt.Printf("排除多个字段:%s\n", sql2)
// 示例 3: 链式调用 Omit
q3 := db.Model(&User{}).Omit("password").Omit("status")
sql3, _ := q3.(*QueryBuilder).BuildSelect()
fmt.Printf("链式调用:%s\n", sql3)
// 示例 4: Select 优先于 Omit
q4 := db.Model(&User{}).Select("id", "name").Omit("password")
sql4, _ := q4.(*QueryBuilder).BuildSelect()
fmt.Printf("Select 优先:%s\n", sql4)
// 输出:
// 排除密码SELECT id, name, email, status FROM user_model
// 排除多个字段SELECT id, name, email FROM user_model
// 链式调用SELECT id, name, email FROM user_model
// Select 优先SELECT id, name FROM user_model
}