【go】xorm CRUD 批量新增及事务

1 xorm

xorm是一个Go语言ORM库,其文档:http://xorm.topgoer.com/

2 基础操作 CRUD

2.1 查

2.1.1 ID查询

  • ID:参数接收主键字段的值
var user User
engine.Id(1).Get(&user)
  • sql语句:select * from user where id = 1

2.1.2 Where查询

  • Where:类sql语句
engine.Where('user_name = ? and pwd = ?', 'davie', '123').Get(&admin)
// 或
engine.Where('user_name = ?','davie').Where('pwd = ?','123').Get(&admin)
  • sql语句:select * from user where user_name = 'davie' and pwd = '123'

2.1.3 Get查单条

result := User
err := engine.Where("student_name = ?", OrgName).Get(&result)

2.1.4 Find查多条

results := make([]User, 0)
err := engine.Where("student_name = ?", OrgName).Find(&results)

2.1.5 Count计数

engine.Count(&user)

2.2 增

2.1.1 单增

var user
engine.Insert(&user)

2.1.2 批量增

// user为切片
user := []User{user1,user2}
engine.Insert(&user)

2.3 改

user:= students.table1{
		age: 12,
	}
engine.Where("name = ?","new").Update(&user)

2.4 删

engine.Where("name = ?","new").Delete(&user)

3 事务

在有需要的批量操作数据时,需用到事务。在xorm中,事务操作和Session联系在一起。一共三个步骤,分别为:创建session对象,Begin事务开始执行,Commit提交事务。中间为具体的数据库操作。

  • 事务代码:
// 创建事务
session := engine.NewSession()
defer session.Close()

// 事务开始
err := session.Begin()
if err != nil {
    return err
}

// 事务相关操作
_, err := dao.Students.DeleteStudents(session, Name)
if err != nil {
// 事务回滚
    session.Rollback()
    return err
}

// 事务提交
err = session.Commit()
if err != nil{
    return err
}
  • 测试函数,按指定Name删除数据:
func (*dStudents) DeleteStudents(session *xorm.Session, Name string) (int64, error) {
	result := students.table1{
		DeletedAt: time.Now().UnixMilli(),
	}
	return session.Table("table1").Where("student_name = ?", OrgName).Where("deleted_at = ?", 0).Update(&result)
}

4 Reference

Go语言学习教程:xorm表基本操作及高级操作:
http://www.taodudu.cc/news/show-732070.html?action=onClick

Go-MySQL(四)XORM:
https://blog.csdn.net/weixin_41922289/article/details/116282272

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微雨停了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值