1 Star 0 Fork 0

UID/go-common-func

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
query.go 908 Bytes
一键复制 编辑 原始数据 按行查看 历史
package funcs
import "reflect"
// 从 查询条件 生成查询 map
// 一般用于生成查询条件, 给GORM的 Where() 用
// query结构体每个属性都设置成指针类型
// 属性值不为空的就说明此属性的值要做为查询条件, 会被放到生成的 map 里
// WARNING: 会忽略不是指针类型的字段, 如果要做到更灵活, 以后再扩展
func QueryFetchConditionMap(query any, conditionMap map[string]interface{}) {
dataType := reflect.TypeOf(query)
dataValues := reflect.ValueOf(query)
numField := dataType.NumField()
for fieldIdx := 0; fieldIdx < numField; fieldIdx++ {
elem := dataValues.Field(fieldIdx)
if elem.Kind() == reflect.Struct {
QueryFetchConditionMap(elem.Interface(), conditionMap)
continue
}
if elem.IsZero() || elem.Kind() != reflect.Ptr {
continue
}
conditionMap[dataType.Field(fieldIdx).Name] = elem.Elem().Interface()
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/uid/go-common-func.git
git@gitee.com:uid/go-common-func.git
uid
go-common-func
go-common-func
v1.0.7

搜索帮助