golang xorm框架的使用
1、创建engine
engine, err := xorm.NewEngine(driverName, dataSourceName)
上述代码创建了一个数据库引擎,可以在一个程序中创建多个engine。
2、查询方法:
2.1、支持sql查询:
1、查询一个string类型的sql,返回[]map[string][]byte类型的切片(查询)
results, err := engine.Query("select * from user")
2、执行一个string的sql,返回结果影响行数(增删改)
affected, err := engine.Exec("update user set .... where ...")
2.2、ORM方法:
主要有七个方法和其他辅助的方法来操作数据库。
1、插入一个或者多个数据:
affected, err := engine.Insert(&struct)
// INSERT INTO struct () values ()
affected, err := engine.Insert(&struct1, &struct2)
// INSERT INTO struct1 () values ()
// INSERT INTO struct2 () values ()
affected, err := engine.Insert(&sliceOfStruct)
// INSERT INTO struct () values (),(),()
affected, err := engine.Insert(&struct1, &sliceOfStruct2)
// INSERT INTO struct1 () values ()
// INSERT INTO struct2 () values (),(),()
2、从数据库里面查询一条记录:
has, err := engine.Get(&user)
// SELECT * FROM user LIMIT 1
3、从数据库中查询多条记录:
sliceOfStructs := new(Struct)
err := engine.Find(sliceOfStructs)
// SELECT * FROM user
4、查询多条记录,然后每条记录进行处理,有两个方法,一个是iterator,另一个是raw:
err := engine.Iterate(...)
// SELECT * FROM user raws, err := engine.Raws(...)
// SELECT * FROM user
bean := new(Struct)
for raws.Next() {
err = raws.Scan(bean)
}
5、更新一条或者多条记录:
affected, err := engine.Update(&user)
// UPDATE user SET ...
6:删除一条或者多条记录,必须存在删除条件
affected, err := engine.Where(...).Delete(&user)
// DELETE FROM user Where ...
7、查询记录条数:
counts, err := engine.Count(&user)
// SELECT count(*) AS total FROM user
2.3:条件:
1、Id、In:
engine.Id(1).Get(&user) // for single primary key
// SELECT * FROM user WHERE id = 1
engine.Id(core.PK{1, 2}).Get(&user) // for composite primary keys
// SELECT * FROM user WHERE id1 = 1 AND id2 = 2
engine.In("id", 1, 2, 3).Find(&users)
// SELECT * FROM user WHERE id IN (1, 2, 3)
engine.In("id", []int{1, 2, 3})
// SELECT * FROM user WHERE id IN (1, 2, 3)
2、 Where, And, Or
engine.Where().And().Or().Find()
// SELECT * FROM user WHERE (.. AND ..) OR ...
3、OrderBy, Asc, Desc
engine.Asc().Desc().Find()
// SELECT * FROM user ORDER BY .. ASC, .. DESC
engine.OrderBy().Find()
// SELECT * FROM user ORDER BY ..
4、 Limit, Top
engine.Limit().Find()
// SELECT * FROM user LIMIT .. OFFSET ..
engine.Top(5).Find()
// SELECT TOP 5 * FROM user // for mssql
// SELECT * FROM user LIMIT .. OFFSET 0 //for other databases
5、Sql, 查询原生SQL
engine.Sql("select * from user").Find()
6、Cols, Omit, Distinct
engine.Cols("col1, col2").Find()
// SELECT col1, col2 FROM user
engine.Cols("col1", "col2").Where().Update(user)
// UPDATE user set col1 = ?, col2 = ? Where ...
engine.Omit("col1").Find()
// SELECT col2, col3 FROM user
engine.Omit("col1").Insert()
// INSERT INTO table (non-col1) VALUES ()
engine.Distinct("col1").Find()
// SELECT DISTINCT col1 FROM user
7、Join, GroupBy, Having
engine.GroupBy("name").Having("name='xlw'").Find()
//SELECT * FROM user GROUP BY name HAVING name='xlw'
engine.Join("LEFT", "userdetail", "user.id=userdetail.id").Find()
//SELECT * FROM user LEFT JOIN userdetail ON user.id=userdetail.id
golang xorm框架的使用的更多相关文章
- Golang 微框架 Gin 简介
框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了.成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应 ...
- go培训课程都学什么?xorm框架学习系列(二):xorm结构体映射规则和表操作
上节内容我们学习了基本的xorm框架的知识和基础配置的相关信息.本节课内容我们继续学习相关的知识和相关操作. 名称映射规则 名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射. ...
- go培训课程都学什么?go语言框架学习:xorm框架知识介绍
xorm框架介绍 xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便. 通过xorm框架,开发者可以方便的使用各种封装好的方法来代替原生的sql语句.这样就降低了我们开发者使 ...
- ent facebook 开源的golang orm 框架
ent 是facebook 开源的golang orm 框架,简单强大,具有提下特性 schema 即代码 方便的图遍历 静态类型以及显示api 多种存储引擎支持(当前是mysql,sqlite,以及 ...
- golang web框架设计7:整合框架
把前面写好的路由器,控制器,日志,都整合在一起 全局变量和初始化 定义一些框架的全局变量 var ( BeeApp *App AppName string AppPath string StaticD ...
- golang web框架设计6:上下文设计
context,翻译为上下文,为什么要设计这个结构?就是把http的请求和响应,以及参数结合在一起,便于集中处理信息,以后框架的扩展等.好多框架比如gin,都是有这个上下文结构. context结构为 ...
- golang web框架设计5:配置设计
配置信息的解析,实现的是一个key=value,键值对的一个配置文件,类似于ini的配置格式,然后解析这个文件,把解析的数据保存到map中,最后调用的时候通过几个string,int之类的函数返回相应 ...
- golang web框架设计4:日志设计
beego的日志设计思路来自于seelog,根据不同的level来记录日志,beego设计的日志是一个轻量级的,采用系统log.Logger接口,默认输出到os.Stdout,用户可以实现这个接口然后 ...
- golang web框架设计3:controller设计
继续学习golang web框架设计 controller作用 MVC设计模式里面的这个C,控制器. Model是后台返回的数据: View是渲染页面,通常是HTML的模板页面: Controller ...
随机推荐
- openssl rsautl和openssl pkeyutl(文件的非对称加密)
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rsautl是rsa的工具,相当于rsa.dgst的部分功能集合,可用于生成 ...
- [转]ui-grid User can't select the row by clicking the select checkbox available in the respective row when enableFullRowSelection : true"
本文转自:https://github.com/angular-ui/ui-grid/issues/5239 Try this style to enable checkbox selection: ...
- IOS中input键盘事件支持的解决方法
欢迎大家去我的网站详细查看http://genghongshuo.com.cn/ IOS中input键盘事件keyup.keydown.等支持不是很好, 用input监听键盘keyup事件,在安卓手机 ...
- Linux中inotify软件部署及参数事件演示
声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/devel ...
- oracle创建用户、创建表空间、授权、建表
2.然后我就可以来创建用户了. create user zzg identified by zzg123; 3.创建好用户我们接着就可以修改用户的密码. alter user zzg identifi ...
- Spark的优势
首先了解一下Mapreduce 它最本质的两个过程就是Map和Reduce,Map的应用在于我们需要数据一对一的元素的映射转换,比如说进行截取,进行过滤,或者任何的转换操作,这些一对一的元素转换就称作 ...
- mapreduce的cleanUp和setUp的特殊用法(TopN问题)和常规用法
一:特殊用法 我们上来不讲普通用法,普通用法放到最后.我们来谈一谈特殊用法,了解这一用法,让你的mapreduce编程能力提高一个档次,毫不夸张!!!扯淡了,让我们进入正题: 我们知道reduce和m ...
- [redis] Redis的介绍
mysql数据库:数据以“文件的形式”存储在硬盘里 网站的瓶颈是在数据库的访问上,mysql数据库是运行在硬盘上面的,把数据放到内存里速度就快多了 Redis是一款内存高速缓存数据库,使用c语言编写, ...
- Kite(几何+镜面对称)
C. Kite Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB Vova bought a kite co ...
- cookie、localStorage、sessionStorage的区别
localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 共同点:sessionStorage.localStorage和cooki ...