Go Web教程29:Gorm增删查改最佳实践
概述
前面讲了Go中,怎样集成Gorm
今天把我的Gorm 增删查改最佳实践代码分享给大家
创建service.go,代码如下
package service import ( "github.com/jinzhu/copier" . "third/db" . "third/vo" "time" ) func ListSmsLog(query SmsLogQuery) SmsLogRspPage { rspSmsLog := SmsLogRspPage{} db := DB if len(query.Phone) > 0 { db = db.Where("phone = ?", query.Phone) } db = db.Where("is_deleted = 0") var count int var smsLogs []SmsLog if err := db.Model(&SmsLog{}).Count(&count).Error; err != nil || count <= 0 { rspSmsLog.Count = -1 rspSmsLog.Content = []SmsLogListVo{} return rspSmsLog } db.Offset((query.Number - 1) * query.Size).Limit(query.Size).Find(&smsLogs) smsLogListVos := convertSmsLogList(smsLogs) rspSmsLog.Content = smsLogListVos rspSmsLog.Count = count return rspSmsLog } func GetSmsLog(query SmsLogFormQuery) SmsLogVo { db := DB noWhere := true if query.Id > 0 { noWhere = false db = db.Where("id = ? ", query.Id) } if len(query.Phone) > 0 { noWhere = false db = db.Where("phone = ?", query.Phone) } smsLogVo := SmsLogVo{} if noWhere { return smsLogVo } smsLog := SmsLog{} if err := db.First(&smsLog).Error; err == nil { smsLogVo = convertSmsLogVo(smsLog) } return smsLogVo } func SaveSmsLog(smsLogVo SmsLogVo) bool { smsLog := SmsLog{} smsLogTemp := SmsLog{} copier.Copy(&smsLog, &smsLogVo) if smsLogVo.Id > 0 { if err := DB.Where("id = ? ", smsLogVo.Id). First(&smsLogTemp).Error; err != nil || smsLogTemp.Id == 0 { return false } smsLog.GmtModified = time.Now() if err := DB.Model(&smsLog).Omit("id").Updates(&smsLog).Error; err != nil { return false } } else { smsLog.GmtModified = time.Now() smsLog.GmtCreate = time.Now() smsLog.IsDeleted = 0 if err := DB.Create(&smsLog).Error; err != nil { return false } } return true } func DelSmsLog(id int) bool { smsLogTemp := SmsLog{} if err := DB.Where("id = ? ", id).First(&smsLogTemp).Error; err != nil || smsLogTemp.Id == 0 { return false } if err := DB.Model(SmsLog{}).Where("id = ? ", id).Update("is_deleted", 1).Error; err == nil { return true } return false } func convertSmsLogList(smsLogs []SmsLog) []SmsLogListVo { var smsLogVos []SmsLogListVo for _, smsLog := range smsLogs { var smsLogListVo SmsLogListVo copier.Copy(&smsLogListVo, &smsLog) smsLogVos = append(smsLogVos, smsLogListVo) } return smsLogVos } func convertSmsLogVo(smsLog SmsLog) SmsLogVo { var smsLogVo SmsLogVo copier.Copy(&smsLogVo, &smsLog) return smsLogVo }
如果你觉得好,可以使用我发布到iOS APP Store的产品
- 人脉管理
- 学习管理
- 爱背单词
- 房产管理
- 物品管理
- 团队管理
- 证书管理
- 专利管理
- 资产管理8
- 密码提示管理
发表评论 取消回复