package base import ( "ulink-admin/frame" "xorm.io/xorm" ) // 封装通用dao type BaseDao struct { } func (this *BaseDao) GetSession() *xorm.Session { return GetSession().Session } // Add 添加角色进入数据库操作 func (this *BaseDao) Insert(beans ...interface{}) *xorm.Session { session := GetSession().Session _, err := session.Insert(beans...) if err != nil { frame.Throw(frame.SQL_CODE, "记录插入错误:"+err.Error()) } return session } // add 添加角色进入数据库操作 func (this *BaseDao) Remove(beans ...interface{}) *xorm.Session { session := GetSession().Session _, err := session.Delete(beans) if err != nil { frame.Throw(frame.SQL_CODE, "删除错误:"+err.Error()) } if err != nil { frame.Throw(frame.SQL_CODE, "记录删除错误:"+err.Error()) } return session } // Update 修改数据 func (this *BaseDao) Update(model IModel, cols ...string) { if model.Key() <= 0 { frame.Throw(frame.BUSINESS_CODE, "主键参数错误") } session := GetSession().Session.Where("id =?", model.Key()) if len(cols) > 0 { _, err := session.Cols(cols...).Update(model.Model()) if err != nil { frame.Throw(frame.SQL_CODE, "记录更新错误:"+err.Error()) } } else { _, err := session.AllCols().Update(model.Model()) if err != nil { frame.Throw(frame.SQL_CODE, "记录更新错误:"+err.Error()) } } } // Delete 删除角色 func (this *BaseDao) DeleteById(id, bean interface{}) { _, err := GetSession().Session.ID(id).Delete(bean) if err != nil { frame.Throw(frame.SQL_CODE, "删除错误:"+err.Error()) } } // Delete 删除list func (this *BaseDao) Delete(bean interface{}, list interface{}) { _, err := GetSession().Session.In("Id", list).Delete(bean) if err != nil { frame.Throw(frame.SQL_CODE, "删除错误:"+err.Error()) } } // Update 更新所有数据 func (this *BaseDao) UpdateAll(list []IModel, col ...string) { Transaction(func(session *xorm.Session) { for _, item := range list { this.Update(item, col...) } }) } // GetById 根据id获取实体对象 func (this *BaseDao) GetById(id int64, model interface{}) interface{} { bl, err := GetSession().Session.Where("id = ?", id).Get(model) if err != nil { frame.Throw(frame.SQL_CODE, "查询错误:"+err.Error()) } if !bl { model = nil } return model } func (this *BaseDao) Exist(table string, where interface{}, key ...interface{}) bool { has, err := GetSession().Session.Table(table).Where(where, key...).Exist() if err != nil { frame.Throw(frame.SQL_CODE, "查询错误:"+err.Error()) } return has } func (this *BaseDao) Count(table string, where interface{}, key ...interface{}) int64 { total, err := GetSession().Session.Table(table).Where(where, key...).Count() if err != nil { frame.Throw(frame.SQL_CODE, "查询错误:"+err.Error()) } return total }