- 我们可以看到,除了Find方法外,还可以调用Update方法,这里即表示更新表结构中的某条数据,且仅仅对该条数据的user_name和status两个字段进行更新,这正是由Cols方法的参数限定的。
- AllCols操作所有字段
- 除了上述的Cols指定一个或者多个字段以外,还可以通过AllCols方法来操作表所有字段,用法与Cols使用方法一致,我们不再赘述。
- MustCols操作限定字段
- MustCols意为操作必须对某些字段起作用,该方法的使用和Update方法相结合的情况较多。
增删改查操作
说了这么多条件查询的内容,我们还没有介绍基本的表记录的增删改查操作呢。如下我们一一进行介绍:
- 增加记录操作
- 增加一条记录可以使用Insert方法完成。该方法接收一个参数,用于传入实际我们要保存的数据对象的结构体对象类型。如下所示:
var user
...
engine.Insert(&user)
- Delete删除记录操作
- 删除数据使用Delete方法来进行操作,但是我们在删除的时候要知道删除具体哪一条数据,因此在Delete操作前,需要使用我们之前讲过的Id操作将数据进行定位查找出来,我们举例如下:
user := new(User)
count,err := engine.Id(id).Delete(user)
- 第一个返回值count表示删除的记录数,第二个参数为错误返回值,当删除失败时,err不为nil。
- Update修改记录操作
- 我们已经讲过MustCols的操作是用来限定必须影响某些表字段的操作的;这里再次我们强调,我们通常和Update操作放在一起来修改数据,作数据的更新操作。
admin := new(Admin)
admin.Status = "1"
count,err := engine.Id(id).Update(user)
- 以上的Update方法是用来更新全部的数据记录,如果是限定更新某个或者某几个字段,可以和Cols结合使用。
- 查询记录操作
- 查询方法有两个,分为查询单条数据和查询多条数据。单条数据的查询使用Get方法、多条数据的查询使用Find方法。
Count表结构统计功能
在进行表数据查询时,我们时长需要统计数据的条数,比如数据一共多少条,用来做分页处理;再比如统计用户数量,也需要使用到计数功能。框架提供给我们Count方法来实现数据统计功能,如下是一个简单的案例:
admin := new(Admin)
count,err := engine.Count(admin)
事务处理
同其他数据库框架一样,xorm也是支持事物操作的。在有需要的批量操作数据时,事务的使用往往是必要的。在xorm中,事务操作和Session联系在一起。一共三个步骤,分别为:创建session对象,Begin表示事务开始执行,Commit表示提交事务。中间为具体的数据库操作。
创建事务
session := engine.NewSession()
defer session.Close()
事务开始
err := session.Begin()
//事务相关操作
事务提交
err = session.Commit()
if err != nil{
panic(err.Error())
}
事务回滚
当在执行事务过程中遇到任何错误时,应该及时停止事务,将已经执行的进行回滚。回滚使用的方法是Rollback方法, 只是在执行出现错误时进行回滚操作。
...
if err != nil {
session.Rollback()
return
}
中间的事务相关操作,与我们的正常的数据库操作相同,支持开发者根据自己需求进行多种操作。比如插入数据和更改输入:
- 事务插入数据
admin := Admin{Name: "Davie", Status: "1"}
_, err = session.Insert(&admin)
- 事务修改数据
admin := Admin{ Name:"Davie"}
count,err := session.Id(2).Update(&admin)
if err != nil {
seesion.Rollback()
return