新建结构体
type User struct {
Id int
Name string
Age int
Address string
DeletedAt time.Time `xorm:"deleted"`
}
新建一个user的结构体指针
user := new(User)
添加数据
user.Name = "张三"
user.Age = 12
user.Address = "河南"
err := engine.Insert(&user)
删除数据
Deleted可以让你不真正的删除数据,而是标记一个删除时间。使用此特性需要在xorm标记中使用deleted标记。
//这是个假删除,也可以叫软删除
engine.Id(1).Delete(&user)
// delete FROM user WHERE id = 1
——————————————————————————————————————————————
其实他在有deleted的时候,实现的SQL的Update
// UPDATE user SET ..., deleted_at = ? WHERE id = 1
更新数据
在xorm中,结构体会自动忽略空字段(比如说默认值,比如int 的0 、string的""),这个时候,怎么解决呢?
指定字段更新,使用Cols
// 例1:
engine.Cols("age", "name").Update(&user) //name和age字段强制更新
// UPDATE user SET age=? AND name=?
指定字段不更新,使用Omit
// 例1:
engine.Omit("name", "age").Update(&user)
// UPDATE user SET name = ? AND age = ? //name和age字段强制不更新
查询数据
has, err := engine.Get(&user)
// SELECT * FROM user LIMIT 1
准确查询数据
has, err := engine.Where("name = ?", name).Cols("id").Get(&id)
// SELECT id FROM user WHERE name = ?