mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-04 00:10:25 +08:00
代码优化
This commit is contained in:
@@ -44,7 +44,7 @@ func (m *Model) SetBaseInfo(account *LoginAccount) {
|
||||
//
|
||||
// 若error不为nil则为不存在该记录
|
||||
func GetById(model interface{}, id uint64, cols ...string) error {
|
||||
return global.Db.Debug().Select(cols).Where("id = ?", id).First(model).Error
|
||||
return global.Db.Select(cols).Where("id = ?", id).First(model).Error
|
||||
}
|
||||
|
||||
// 根据id更新model,更新字段为model中不为空的值,即int类型不为0,ptr类型不为nil这类字段值
|
||||
@@ -67,27 +67,27 @@ func Insert(model interface{}) error {
|
||||
//
|
||||
// @param list为数组类型 如 var users []*User,可指定为非model结构体,即只包含需要返回的字段结构体
|
||||
func ListBy(model interface{}, list interface{}, cols ...string) {
|
||||
global.Db.Debug().Model(model).Select(cols).Where(model).Find(list)
|
||||
global.Db.Model(model).Select(cols).Where(model).Find(list)
|
||||
}
|
||||
|
||||
// 获取满足model中不为空的字段值条件的单个对象。model需为指针类型(需要将查询出来的值赋值给model)
|
||||
//
|
||||
// 若 error不为nil,则为不存在该记录
|
||||
func GetBy(model interface{}, cols ...string) error {
|
||||
return global.Db.Debug().Select(cols).Where(model).First(model).Error
|
||||
return global.Db.Select(cols).Where(model).First(model).Error
|
||||
}
|
||||
|
||||
// 获取满足conditionModel中不为空的字段值条件的单个对象。model需为指针类型(需要将查询出来的值赋值给model)
|
||||
// @param toModel 需要查询的字段
|
||||
// 若 error不为nil,则为不存在该记录
|
||||
func GetByConditionTo(conditionModel interface{}, toModel interface{}) error {
|
||||
return global.Db.Debug().Model(conditionModel).Where(conditionModel).First(toModel).Error
|
||||
return global.Db.Model(conditionModel).Where(conditionModel).First(toModel).Error
|
||||
}
|
||||
|
||||
// 获取分页结果
|
||||
func GetPage(pageParam *PageParam, conditionModel interface{}, toModels interface{}, orderBy ...string) PageResult {
|
||||
var count int64
|
||||
global.Db.Debug().Model(conditionModel).Where(conditionModel).Count(&count)
|
||||
global.Db.Model(conditionModel).Where(conditionModel).Count(&count)
|
||||
if count == 0 {
|
||||
return PageResult{Total: 0, List: []string{}}
|
||||
}
|
||||
@@ -99,7 +99,7 @@ func GetPage(pageParam *PageParam, conditionModel interface{}, toModels interfac
|
||||
} else {
|
||||
orderByStr = strings.Join(orderBy, ",")
|
||||
}
|
||||
global.Db.Debug().Model(conditionModel).Where(conditionModel).Order(orderByStr).Limit(pageSize).Offset((page - 1) * pageSize).Find(toModels)
|
||||
global.Db.Model(conditionModel).Where(conditionModel).Order(orderByStr).Limit(pageSize).Offset((page - 1) * pageSize).Find(toModels)
|
||||
return PageResult{Total: count, List: toModels}
|
||||
}
|
||||
|
||||
@@ -127,92 +127,3 @@ func GetListBySql(sql string, params ...interface{}) []map[string]interface{} {
|
||||
global.Db.Raw(sql, params).Scan(&maps)
|
||||
return maps
|
||||
}
|
||||
|
||||
// 获取所有列表数据
|
||||
// model为数组类型 如 var users []*User
|
||||
// func GetList(seter orm.QuerySeter, model interface{}, toModel interface{}) {
|
||||
// _, _ = seter.All(model, getFieldNames(toModel)...)
|
||||
// err := utils.Copy(toModel, model)
|
||||
// biz.BizErrIsNil(err, "实体转换错误")
|
||||
// }
|
||||
|
||||
// func getOrm() orm.Ormer {
|
||||
// return orm.NewOrm()
|
||||
// }
|
||||
|
||||
// // 结果模型缓存
|
||||
// var resultModelCache = make(map[string][]string)
|
||||
|
||||
// // 获取实体对象的字段名
|
||||
// func getFieldNames(obj interface{}) []string {
|
||||
// objType := indirectType(reflect.TypeOf(obj))
|
||||
// cacheKey := objType.PkgPath() + "." + objType.Name()
|
||||
// cache := resultModelCache[cacheKey]
|
||||
// if cache != nil {
|
||||
// return cache
|
||||
// }
|
||||
// cache = getFieldNamesByType("", reflect.TypeOf(obj))
|
||||
// resultModelCache[cacheKey] = cache
|
||||
// return cache
|
||||
// }
|
||||
|
||||
// func indirectType(reflectType reflect.Type) reflect.Type {
|
||||
// for reflectType.Kind() == reflect.Ptr || reflectType.Kind() == reflect.Slice {
|
||||
// reflectType = reflectType.Elem()
|
||||
// }
|
||||
// return reflectType
|
||||
// }
|
||||
|
||||
// func getFieldNamesByType(namePrefix string, reflectType reflect.Type) []string {
|
||||
// var fieldNames []string
|
||||
|
||||
// if reflectType = indirectType(reflectType); reflectType.Kind() == reflect.Struct {
|
||||
// for i := 0; i < reflectType.NumField(); i++ {
|
||||
// t := reflectType.Field(i)
|
||||
// tName := t.Name
|
||||
// // 判断结构体字段是否为结构体,是的话则跳过
|
||||
// it := indirectType(t.Type)
|
||||
// if it.Kind() == reflect.Struct {
|
||||
// itName := it.Name()
|
||||
// // 如果包含Time或time则表示为time类型,无需递归该结构体字段
|
||||
// if !strings.Contains(itName, "BaseModel") && !strings.Contains(itName, "Time") &&
|
||||
// !strings.Contains(itName, "time") {
|
||||
// fieldNames = append(fieldNames, getFieldNamesByType(tName+"__", it)...)
|
||||
// continue
|
||||
// }
|
||||
// }
|
||||
|
||||
// if t.Anonymous {
|
||||
// fieldNames = append(fieldNames, getFieldNamesByType("", t.Type)...)
|
||||
// } else {
|
||||
// fieldNames = append(fieldNames, namePrefix+tName)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// return fieldNames
|
||||
// }
|
||||
|
||||
// func ormParams2Struct(maps []orm.Params, structs interface{}) error {
|
||||
// structsV := reflect.Indirect(reflect.ValueOf(structs))
|
||||
// valType := structsV.Type()
|
||||
// valElemType := valType.Elem()
|
||||
// sliceType := reflect.SliceOf(valElemType)
|
||||
|
||||
// length := len(maps)
|
||||
|
||||
// valSlice := structsV
|
||||
// if valSlice.IsNil() {
|
||||
// // Make a new slice to hold our result, same size as the original data.
|
||||
// valSlice = reflect.MakeSlice(sliceType, length, length)
|
||||
// }
|
||||
|
||||
// for i := 0; i < length; i++ {
|
||||
// err := utils.Map2Struct(maps[i], valSlice.Index(i).Addr().Interface())
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
// structsV.Set(valSlice)
|
||||
// return nil
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user