xorm常用编程方法总结
来源:互联网 发布:制作电子杂志的软件 编辑:程序博客网 时间:2024/06/05 20:24
- 官方文档
- Get方法
- 1 根据Id来获得单条数据
- 2 根据Where来获得单条数据
- 3 根据user结构体中已有的非空数据来获得单条数据
- Find方法
- 1 传入Slice用于返回数据
- 2 传入Map用户返回数据map必须为mapint64Userinfo的形式map的key为id因此对于复合主键无法使用这种方式
- 3 也可以加入各种条件
- Count方法
- 执行SQL命令
官方文档
官方文档
xorm支持将一个struct映射为数据库中对应的一张表.这样的好处在于在go语言中可以很方便的获取查询结果到结构体中而不用逐个赋值。
Get方法
查询单条数据使用Get方法,在调用Get方法时需要传入一个对应结构体的指针,同时结构体中的非空field自动成为查询的条件和前面的方法条件组合在一起查询。
如:
1) 根据Id来获得单条数据:
user := new(User)has, err := engine.Id(id).Get(user)
// 复合主键的获取方法
// has, errr := engine.Id(xorm.PK{1,2}).Get(user)
2) 根据Where来获得单条数据:
user := new(User)has, err := engine.Where("name=?", "xlw").Get(user)
3) 根据user结构体中已有的非空数据来获得单条数据:
user := &User{Id:1}has, err := engine.Get(user)
或者其它条件
user := &User{Name:"xlw"}has, err := engine.Get(user)
返回的结果为两个参数,一个has为该条记录是否存在,第二个参数err为是否有错误。不管err是否为nil,has都有可能为true或者false。
Find方法
查询多条数据使用Find方法,Find方法的第一个参数为slice的指针或Map指针,即为查询后返回的结果,第二个参数可选,为查询的条件struct的指针。
1) 传入Slice用于返回数据
everyone := make([]Userinfo, 0)err := engine.Find(&everyone)pEveryOne := make([]*Userinfo, 0)err := engine.Find(&pEveryOne)
2) 传入Map用户返回数据,map必须为map[int64]Userinfo的形式,map的key为id,因此对于复合主键无法使用这种方式。
users := make(map[int64]Userinfo)err := engine.Find(&users)pUsers := make(map[int64]*Userinfo)err := engine.Find(&pUsers)
3) 也可以加入各种条件
users := make([]Userinfo, 0)err := engine.Where("age > ? or name = ?", 30, "xlw").Limit(20, 10).Find(&users)
Count方法
统计数据使用Count方法,Count方法的参数为struct的指针并且成为查询条件。
user := new(User)total, err := engine.Where("id >?", 1).Count(user)
执行SQL命令
也可以直接执行一个SQL命令,即执行Insert, Update, Delete 等操作。此时不管数据库是何种类型,都可以使用 ` 和 ? 符号。
sql = "update `userinfo` set username=? where id=?"res, err := engine.Exec(sql, "xiaolun", 1)
0 0
- xorm常用编程方法总结
- python编程常用方法总结
- iOS 开发中,多线程编程GCD的常用方法总结
- 编程常用引号总结
- python编程常用总结
- DOM编程常用方法
- Python 常用编程方法
- 并发编程常用方法
- jquery常用方法总结
- jquery常用方法总结
- luabind常用方法总结
- JQuery常用方法总结
- JQuery常用方法总结
- jquery常用方法总结
- Java常用方法总结
- jQuery 常用方法总结
- jQuery 常用方法总结
- Jquery常用方法总结
- C++ 常用库函数atoi,itoa,strcpy,strcmp的实现
- java算法问题请大神赐教
- ruby https post request模拟
- OpenCV-Python Tutorials 学习中遇到的问题
- 8天学通MongoDB——第三天 细说高级操作
- xorm常用编程方法总结
- mysql 从表中选出数据然后排序
- TF-IDF与余弦相似性的应用(一):自动提取关键词
- 计算机网络概述
- 从0开始学习 GitHub 系列之「加入 GitHub」
- 总线,设备,驱动的设备模型
- okhttp3与okhttp的区别
- CSS中margin和padding的区别
- 微信小程序开发资源汇总