美文网首页
xorm - 软删除

xorm - 软删除

作者: Uzero | 来源:发表于2017-12-24 18:16 被阅读0次

在xorm标记中使用deleted标记,且对应的字段必须为time.Time类型。

packagemain

import(

    _"github.com/go-sql-driver/mysql"

    "github.com/go-xorm/xorm"

    "log"

    "time"

    "os"

    "fmt"

)

type User struct {

    Id int64

    Name string

    Age int

    DeletedAt time.Time `xorm:"deleted"`   // 软删除字段类型必须为time.Time

}

var x *xorm.Engine

func init () {

    var err error x, err = xorm.NewEngine("mysql", "root:@/go?charset=utf8")

    if err != nil {

        log.Fatalf("fail to create engine, err : %v", err)

    }

    if err := x.Sync(new(User)) ; err != nil {

        log.Fatalf("fail to sync database, err : %v", err)

    }

    x.ShowSQL(true)

    f, err := os.Create("sql.log") if err != nil {

        log.Fatalf("to fail create sql.log, err : %v", err)

    }    

    x.SetLogger(xorm.NewSimpleLogger(f))

}

func main () {

    user := &User{}

    id := 1

    // get once

    has, err := x.Id(id).Get(user)

    if err != nil {

        log.Fatalf("fail to get, err : %v", err)

    } else if !has {

        log.Fatalf("not fund, err : %v", err)

    }

    // delete action

    fmt.Printf("%#v \n", user)

    a, err := x.Id(id).Delete(user)

    if err != nil {

        log.Fatalf("fail to delete, err : %v", err)

    }

    fmt.Println(a)

    // get again

    isHas, isErr := x.Id(id).Get(user)

    if isErr != nil {

        log.Fatalf("fail to get, err : %v", isErr)

    } else if !isHas {

        log.Fatalf("not fund, err : %v", isErr)    

    }

    fmt.Println(6055)

    fmt.Printf("%#v \n", user)

}

1、初始化数据

2、执行 go run deleteSoft.go

综上,当软删除之后,后面get不到。

******如果记录已经被标记为删除后,要真正的获得该条记录或者真正的删除该条记录,需要启用Unscoped******

id := 1

// 可以获得记录

x.Id(id).Unscoped().Get(user)

fmt.Printf("%#v \n",user)

// 可以真正的删除记录

b,_ := x.Id(id).Unscoped().Delete(user)

fmt.Println(b)

相关文章

  • xorm - 软删除

    在xorm标记中使用deleted标记,且对应的字段必须为time.Time类型。 packagemainimpo...

  • golang-MySql

    一、mySql连接 1、引入驱动包和xorm import "github.com/go-xorm/xorm" i...

  • go xorm cmd工具使用

    安装go-sql-driver/mysql 安装xorm 安装xorm的cmd命令工具 找到xorm安装的目录 进...

  • xorm生成go关于表结构的文件

    1.首先安装xorm cmd。2.cd E:\go\src\github.com\go-xorm\cmd\xorm...

  • Go ORM框架XORM事务的示例

    说明 XORM文档 xorm-plus,xorm的增强版本,支持嵌套式事务 使用的是sqlite数据库 语句orm...

  • 软删除

    软删除即不真正删除数据库中的数据,数据是可以恢复的,只是对用户来讲是不可见的。软删除在实际应用中很广泛,除了一般的...

  • linux创建软链接

    Ubuntu创建软连接 建立软连接 删除软连接 创建软连接

  • 数据的软删除—什么时候需要?如何去实现?

    阅读完本文你将会学会 什么是软删除? 如何考量是否使用软删除 如何在Spring里实现软删除 1. 前言 我们在开...

  • go 使用 xorm 框架

    介绍 · Go语言中文文档-xorm[http://xorm.topgoer.com/] 实现分页 TODO

  • 妥善处理复杂业务系统中的“删除”

    删除的分类 什么是软删除软删除又叫逻辑删除,标记删除,与我们常说的删除不同,并不是真的从数据库中将这条记录去除,而...

网友评论

      本文标题:xorm - 软删除

      本文链接:https://www.haomeiwen.com/subject/kzyhgxtx.html