當(dāng)前較為主流/活躍的orm有g(shù)orm、xorm、gorose等。 (推薦學(xué)習(xí):go)
xorm
支持的數(shù)據(jù)庫(kù)有:mysql、mymysql、postgres、tidb、sqlite、mssql、oracle
事務(wù)性支持
鏈?zhǔn)絘pi
has, err := engine.Where("name = ?", name).Desc("id").Get(&user) err := engine.Where(builder.NotIn("a", 1, 2).And(builder.In("b", "c", "d", "e"))).Find(&users)
支持原生sql操作
查詢緩存
可根據(jù)數(shù)據(jù)庫(kù)反轉(zhuǎn)生成代碼
級(jí)聯(lián)加載
提供sql語(yǔ)句日志輸出
支持批量查詢處理
gorm
hook機(jī)制(Before/After Create/Save/Update/Delete/Find)
對(duì)象關(guān)系Has One, Has Many, Belongs To, Many To Many, Polymorphism
熱加載
支持原生sql操作
事務(wù)性
鏈?zhǔn)絘pi
tx := db.Where("name = ?", "jinzhu").Where("age = ?", 20).Find(&users)
支持的數(shù)據(jù)庫(kù)有:mysql、postgre、sqlite、sqlserver
查詢操作
gorose
支持的數(shù)據(jù)庫(kù)有:mysql、postgres、sqlite、mssql、oracle
鏈?zhǔn)絘pi
同時(shí)連接多個(gè)數(shù)據(jù)庫(kù)和切換
支持原生sql操作
支持批量查詢處理
事務(wù)性
相似性
各orm支持的數(shù)據(jù)庫(kù)都基本相同(主流數(shù)據(jù)庫(kù)都支持)
支持事務(wù)性、鏈?zhǔn)讲樵兊?/p>
差異
xorm、gorose支持批量查詢處理
xorm支持主從式讀寫分離
gorm支持熱加載
gorose便于在多個(gè)數(shù)據(jù)庫(kù)切換
文檔全面性gorm>xorm>gorose