设为首页 加入收藏

TOP

xorm-删除和软删除实例(一)
2019-05-28 16:08:23 】 浏览:178
Tags:xorm- 删除 实例
  • 删除数据Delete方法,参数为struct的指针并且成为查询条件。注意:当删除时,如果user中包含有bool,float64或者float32类型,有可能会使删除失败
package main

import (
  "fmt"
  _ "github.com/go-sql-driver/mysql"
  "github.com/go-xorm/xorm"
  "log"
)

var engine *xorm.Engine

type User struct {
  Name      string    `xorm:"varchar(25) 'name'"`
  Id        int       `xorm:"pk 'id' autoincr"`
}

func main() {
  var err error
  engine, err = xorm.NewEngine("mysql", "root:123456@/test")
  if err != nil {
      log.Fatal(err)
      return
  }
  //创建表和插入数据
  /*err = engine.CreateTables(User{})
  if err != nil {
      log.Fatal(err)
      return
  }

  u := make([]User, 3)
  u[0].Name = "u0"
  u[1].Name = "u1"
  u[2].Name = "u2"

  _, err = engine.Insert(u)
  if err != nil {
      log.Fatal(err)
      return
  }*/

  uu := new(User)
  has ,err :=engine.Id(2).Get(uu)
  if err !=nil {
      log.Fatal(err)
      return
  }
  if has {
      fmt.Println("删除Deleted,用户名:",uu.Name)
  }else {
      fmt.Println("该数据现在已经不存在")
  }

  affected, err := engine.Id(2).Delete(uu)
  if err != nil {
      log.Fatal(err)
      return
  }
  fmt.Println("删除Delete,受影响的行数:", affected)
  fmt.Println()


  has ,err =engine.Id(2).Get(uu)
  if err !=nil {
      log.Fatal(err)
      return
  }
  if has {
      fmt.Println("删除Deleted,用户名:",uu.Name,"deleteAt:")
  }else {
      fmt.Println("该数据现在已经不存在")
  }


  affected, err = engine.Id(2).Delete(uu)
  if err != nil {
      log.Fatal(err)
      return
  }
  fmt.Println("删除Delete,受影响的行数:", affected)
  fmt.Println()


/*
  输出:
  删除Deleted,用户名: u1
  删除Delete,受影响的行数: 1

  该数据现在已经不存在
  删除Delete,受影响的行数: 0
*/

}
  • 软删除Deleted, Deleted可以让您不真正的删除数据,而是标记一个删除时间。使用此特性需要在xorm标记中使用deleted标记,对应的字段必须为time.Time类型。在Delete()时,deleted标记的字段将会被自动更新为当前时间而不是去删除该条记录

    package main
    
    import (
      "fmt"
      _ "github.com/go-sql-driver/mysql"
      "github.com/go-xorm/xorm"
      "log"
      "time"
    )
    
    var engine *xorm.Engine
    
    type User struct {
      Name      string    `xorm:"varchar(25) 'name'"`
      Id        int       `xorm:"pk 'id' autoincr"`
      Version   int       `xorm:"version"`
      UpdatedAt time.Time `xorm:"updated"`
      DeletedAt time.Time `xorm:"deleted"`
    }
    
    func main() {
      var err error
      engine, err = xorm.NewEngine("mysql", "root:123456@/test")
      if err != nil {
          log.Fatal(err)
          return
      }
      //创建表和插入数据
    /*    err = engine.CreateTables(User{})
      if err != nil {
          log.Fatal(err)
          return
      }
    
      u := make([]User, 3)
      u[0].Name = "u0"
      u[1].Name = "u1"
      u[2].Name = "u2"
    
      _, err = engine.Insert(u)
      if err != nil {
          log.Fatal(err)
          return
      }*/
    
      uu := new(User)
      has ,err :=engine.Id(2).Get(uu)
      if err !=nil {
          log.Fatal(err)
          return
      }
      if has {
          fmt.Println("软删除Deleted,用户名:",uu.Name,"deleteAt:",uu.DeletedAt)
      }else {
          fmt.Println("该数据现在已经不存在")
      }
    
      affected, err := engine.Id(2).Delete(uu)
      if err != nil {
          log.Fatal(err)
          return
      }
      fmt.Println("软删除Delete,受影响的行数:", affected)
      fmt.Println()
    
    
      has ,err =engine.Id(2).Get(uu)
      if err !=nil {
          log.Fatal(err)
          return
      }
      if has {
          fmt.Println("软删除Deleted,用户名:",uu.Name,"deleteAt:",uu.DeletedAt)
      }else {
          fmt.Println("该数据现在已经不存在")
      }
    
    
      affected, err = engine.Id(2).Delete(uu)
      if err != nil {
          log.Fatal(err)
          ret
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇golang 堆排序 下一篇xorm - Update,乐观锁,更新时间u..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目