参考:xorm操作指南,这边有一些配置或者其他的数据库配置(主要是mysql)会省去,具体查看该文档。
文章目录
1、特性
- 支持Struct和数据库表之间的灵活映射,并支持自动同步
- 事务支持,支持嵌套事务(支持类JAVA Spring的事务传播机制)
- 同时支持原始SQL语句和ORM操作的混合执行
- 使用连写来简化调用
- 支持使用Id, In, Where, Limit, Join, Having, Table, Sql, Cols等函数和结构体等方式作为条件
- 支持级联加载Struct
- 支持类ibatis方式配置SQL语句(支持xml配置文件、json配置文件、xsql配置文件,支持pongo2、jet、html/template模板和自定义实现配置多种方式)
- 支持动态SQL功能
- 支持一次批量混合执行多个CRUD操作,并返回多个结果集
- 支持数据库查询结果直接返回Json字符串和xml字符串
- 支持SqlMap配置文件和SqlTemplate模板密文存储和解析
- 支持缓存
- 支持主从数据库(Master/Slave)数据库读写分离
- 支持根据数据库自动生成xorm的结构体
- 支持记录版本(即乐观锁)
- 支持查询结果集导出csv、tsv、xml、json、xlsx、yaml、html功能
- 支持SQL Builder github.com/go-xorm/builder
这些xorm的特性看下来,感觉和你在java中用mybatis或者hibernate还是比较类似的。主要开发比较关注的特性有下面这些(我觉得):
1 支持实体和表的属性映射、2 事务传播的支持,spring的事务传播的实现可以参考我的csdn文章、5 和mybatis之前的分页插件还有其他一些插件还是挺类似的 7 自己写sql,这个功能我觉得很强 14 这个有点类似hibernate的逆向工程
2、安装
安装很简单,安装命令:go get -u github.com/xormplus/xorm
3、Orm引擎(包含配置)
他这边有一个说明,感觉还是很有用的:
在xorm里面,可以同时存在多个Orm引擎,一个Orm引擎称为Engine,一个Engine一般只对应一个数据库。
感觉这个东西好处在于说我一个项目可能存在多个数据库,而不是传统的web架构,比如说现在在做的游戏,可能跨服和单区服的数据库不在同一个库,那么这个功能就派上用处了。就是不同的场景传入不同的数据引擎以达到操作不同数据库的目的。
1、创建(mysql为例)
这边以连接mysql数据为例:
import (
_ "github.com/go-sql-driver/mysql"
"github.com/xormplus/xorm"
)
var engine *xorm.Engine
func main(