# 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
如果這項目對您有很大幫助,您愿意支持這個項目的進一步開發和這個項目的持續維護。你可以掃描下面的二維碼,讓我喝一杯咖啡或豆奶。非常感謝您的捐贈,感謝您對開源項目的支持,謝謝。
(支付寶)

## 討論
請加入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 工具
- 常見問題
- 感謝支持