[TOC]
# 概述
**Github**:[https://github.com/dengsgo/taurus](https://github.com/dengsgo/taurus)
**Issue**: [https://github.com/dengsgo/taurus/issues](https://github.com/dengsgo/taurus/issues)
taurus 是 Golang 的一款關系型數據庫 ORM ( Object Relational Mapping ) 庫。它簡單、快速、高效,所見即所得。擁有著友好的使用接口,使用者無需關心底層邏輯,甚至于無需編寫任何 Go 代碼即可使用它。
## 特性
相比于其他的 ORM 庫,taurus 有以下顯著的特性:
- 無需編寫 Go 代碼。taurus 會根據 `描述文件` 自動生成模板代碼;
- 沒有反射。taursu 核心邏輯拋棄了運行時反射的思路,將代碼提前到編譯前生成,因此運行速度更快,更安全;
- 無需傳入數據表的結構體手動綁定數據。 taurus 會為所有生成的數據表實體結構自動綁定一系列的接口方法,只需簡單 `New{table}TM()` 獲取實例指針,便可使用`Find()`、`First()`、`Gets()` 等等一系列方法,不用再額外傳入綁定的參數;
- 告別手寫 SQL、綁定參數。taurus 實現了強大的 `QueryBuilder` ,幾乎可以完成所有的 SQL 語句生成,無論簡單亦或復雜。你只需使用它提供的友好API接口方法,taurus 會為你自動完成剩下的所有工作;
- 強大的表關系管理。taurus 能為你管理無窮多的表關系,一旦關系被建立,你就能使用 `Fill({表關系名字})` 將關系到的數據綁定在自己的結構體上,而你無需再做其他任何事情;
- 聰明的事務支持。taurus 僅提供一個事務方法,屏蔽掉所有底層實現,成功會自動提交,出錯就自動回滾。
- 自定義擴展。taurus 的部件(比如:JSON 編解碼、Log 日志、Event 事件管理器)都是面向接口編程的,這意味著你可以用自己實現相應接口的部件,來輕松替換 taurus 對應的部件。
## 多主多從、集群支持
taurus 支持多種數據庫模式。從單機到一主多從、多主多從、數據庫集群,甚至于多種數據庫類型的多個集群混用,都不在話下。
在你的程序 `init ` 方法里將所有的數據庫源注冊到 taurus 中,taurus 會管理和使用它。
[查看詳細文檔](./)
## 分表支持
taurus 提供了對分表的底層支持。你可以根據需求分別對不同的表注冊不同的分表算法,taurus 會在生成 SQL 時聰明地選擇合適的表名進行操作。
[查看詳細文檔](./)
## 擴展性
taurus 支持
## 支持的數據庫類型
受益于官方 `database/sql` 包,taurus 支持多種數據庫,包括 MySQL、SQLite、PostgreSQL、Oracle。你可以根據實際需求,選擇任意數據庫的任意一款驅動程序注冊到 taurus 中。
taurus 推薦的驅動包:
// TODO