base_dao.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package base
  2. import (
  3. "ulink-admin/frame"
  4. "xorm.io/xorm"
  5. )
  6. // 封装通用dao
  7. type BaseDao struct {
  8. }
  9. func (this *BaseDao) GetSession() *xorm.Session {
  10. return GetSession().Session
  11. }
  12. // Add 添加角色进入数据库操作
  13. func (this *BaseDao) Insert(beans ...interface{}) *xorm.Session {
  14. session := GetSession().Session
  15. _, err := session.Insert(beans...)
  16. if err != nil {
  17. frame.Throw(frame.SQL_CODE, "记录插入错误:"+err.Error())
  18. }
  19. return session
  20. }
  21. // add 添加角色进入数据库操作
  22. func (this *BaseDao) Remove(beans ...interface{}) *xorm.Session {
  23. session := GetSession().Session
  24. _, err := session.Delete(beans)
  25. if err != nil {
  26. frame.Throw(frame.SQL_CODE, "删除错误:"+err.Error())
  27. }
  28. if err != nil {
  29. frame.Throw(frame.SQL_CODE, "记录删除错误:"+err.Error())
  30. }
  31. return session
  32. }
  33. // Update 修改数据
  34. func (this *BaseDao) Update(model IModel, cols ...string) {
  35. if model.Key() <= 0 {
  36. frame.Throw(frame.BUSINESS_CODE, "主键参数错误")
  37. }
  38. session := GetSession().Session.Where("id =?", model.Key())
  39. if len(cols) > 0 {
  40. _, err := session.Cols(cols...).Update(model.Model())
  41. if err != nil {
  42. frame.Throw(frame.SQL_CODE, "记录更新错误:"+err.Error())
  43. }
  44. } else {
  45. _, err := session.AllCols().Update(model.Model())
  46. if err != nil {
  47. frame.Throw(frame.SQL_CODE, "记录更新错误:"+err.Error())
  48. }
  49. }
  50. }
  51. // Delete 删除角色
  52. func (this *BaseDao) DeleteById(id, bean interface{}) {
  53. _, err := GetSession().Session.ID(id).Delete(bean)
  54. if err != nil {
  55. frame.Throw(frame.SQL_CODE, "删除错误:"+err.Error())
  56. }
  57. }
  58. // Delete 删除list
  59. func (this *BaseDao) Delete(bean interface{}, list interface{}) {
  60. _, err := GetSession().Session.In("Id", list).Delete(bean)
  61. if err != nil {
  62. frame.Throw(frame.SQL_CODE, "删除错误:"+err.Error())
  63. }
  64. }
  65. // Update 更新所有数据
  66. func (this *BaseDao) UpdateAll(list []IModel, col ...string) {
  67. Transaction(func(session *xorm.Session) {
  68. for _, item := range list {
  69. this.Update(item, col...)
  70. }
  71. })
  72. }
  73. // GetById 根据id获取实体对象
  74. func (this *BaseDao) GetById(id int64, model interface{}) interface{} {
  75. bl, err := GetSession().Session.Where("id = ?", id).Get(model)
  76. if err != nil {
  77. frame.Throw(frame.SQL_CODE, "查询错误:"+err.Error())
  78. }
  79. if !bl {
  80. model = nil
  81. }
  82. return model
  83. }
  84. func (this *BaseDao) Exist(table string, where interface{}, key ...interface{}) bool {
  85. has, err := GetSession().Session.Table(table).Where(where, key...).Exist()
  86. if err != nil {
  87. frame.Throw(frame.SQL_CODE, "查询错误:"+err.Error())
  88. }
  89. return has
  90. }
  91. func (this *BaseDao) Count(table string, where interface{}, key ...interface{}) int64 {
  92. total, err := GetSession().Session.Table(table).Where(where, key...).Count()
  93. if err != nil {
  94. frame.Throw(frame.SQL_CODE, "查询错误:"+err.Error())
  95. }
  96. return total
  97. }