# xorm
xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。
## 说明
* 本库是基于原版 <b>xorm</b>:[https://github.com/go-xorm/xorm](https://github.com/go-xorm/xorm) 的定制增强版本,由于本定制版有第三方库依赖(原版xorm无任何第三方库依赖),原版xorm要保持对第三方库零依赖特性,所以只好单独开了本Github库。
* 本库的相关定制功能是为了解决更简单的进行复杂SQL调用和一些特殊业务需求场景而开发的。
* 本定制版ORM相关核心功能和原版保持一致,会跟随原版xorm更新。
* 定制功能采用针对原版弱侵入性代码实现。
## 特性
* 支持Struct和数据库表之间的灵活映射,并支持自动同步
* 事务支持,支持嵌套事务(支持类JAVA Spring的事务传播机制)
* 同时支持原始SQL语句和ORM操作的混合执行
* 使用连写来简化调用
* 支持使用Id, In, Where, Limit, Join, Having, Table, Sql, Cols等函数和结构体等方式作为条件
* 支持级联加载Struct
* 支持类ibatis方式配置SQL语句(支持xml配置文件、json配置文件、xsql配置文件,支持[pongo2](https://github.com/flosch/pongo2)、[jet](https://github.com/CloudyKit/jet)、[html/template](https://github.com/golang/go/tree/master/src/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](https://github.com/go-xorm/builder)
## 驱动支持
目前支持的Go数据库驱动和对应的数据库如下:
* Mysql: [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
* MyMysql: [github.com/ziutek/mymysql](https://github.com/ziutek/mymysql)
* Postgres: [github.com/lib/pq](https://github.com/lib/pq)
* Tidb: [github.com/pingcap/tidb](https://github.com/pingcap/tidb)
* SQLite: [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
* MsSql: [github.com/denisenkom/go-mssqldb](https://github.com/denisenkom/go-mssqldb)
* MsSql: [github.com/lunny/godbc](https://github.com/lunny/godbc)
* Oracle: [github.com/mattn/go-oci8](https://github.com/mattn/go-oci8) (试验性支持)
## 安装
go get -u github.com/xormplus/xorm
如果这项目对您有很大帮助,您愿意支持这个项目的进一步开发和这个项目的持续维护。你可以扫描下面的二维码,让我喝一杯咖啡或豆奶。非常感谢您的捐赠,感谢您对开源项目的支持,谢谢。
(支付宝)
![](https://box.kancloud.cn/d75835f24644ae81809d99d8ff23a1fb_476x464.jpg)
## 讨论
请加入QQ群:280360085 进行讨论。API设计相关建议可联系本人QQ:50892683
- xorm
- 创建Orm引擎
- 定义表结构体
- 名称映射规则
- 前缀映射,后缀映射和缓存映射
- 使用Table和Tag改变名称映射
- Column属性定义
- 表结构操作
- 获取数据库信息
- 表操作
- 创建索引和唯一索引
- 同步数据库结构
- 导入导出SQL脚本
- SqlMap及SqlTemplate模板
- 初始化SqlMap配置文件及SqlTemplate模板
- SqlMap及SqlTemplate相关功能API
- SqlMap配置文件及SqlTemplate模板加密存储及解析
- 手动管理SqlMap配置及SqlTemplate模板
- 插入数据
- ORM方式插入数据
- 执行SQL命令插入数据
- 创建时间Created
- 查询和统计数据
- ORM方式查询和统计数据
- 查询条件方法
- 临时开关方法
- Get方法
- Find方法
- Join的使用
- Iterate方法
- Count方法
- Rows方法
- Sum系列方法
- Exist方法
- 子查询
- 执行SQL查询
- 执行SQL查询的11种常用方式
- 查询返回json或xml字符串
- 链式查询据操返回某条记录的某个字段的值
- SqlTemplateClient执行过程
- 关于数据库分页查询
- 更新数据
- ORM方式更新数据
- Update方法
- 乐观锁Version
- 更新时间Updated
- 执行SQL命令更新数据
- 删除数据
- ORM方式删除数据
- Delete方法
- 软删除Deleted
- 执行SQL命令删除数据
- 事务处理
- 简单事务模型
- 嵌套事务模型
- 八种事务类型及事务传播机制
- 简单事务相关API
- 嵌套事务相关API
- 嵌套事务示例代码
- 主从数据库(Master/Slave)读写分离
- 创建引擎组
- 负载策略
- 引擎组其他配置方法
- 数据库读写分离
- 批量混合SQL操作
- SQL Builder
- 缓存
- 事件
- 数据导出
- Dump数据库结构和数据
- 查询结果集导出csv、tsv、xml、json、xlsx、yaml、html
- 多Sheet页数据导出
- 日志
- 连接池
- xorm 工具
- 常见问题
- 感谢支持