歡迎您光臨本站 註冊首頁

v0.1.3 版本更新:

  • 修復一個排序bug
  • 調整最佳化實現,減少內部複雜度

gosql 是一款開源的 操作mysql類庫, 支援用golang方式書寫複雜sql。

  • 特有的風格寫法
  • 支援巢狀的複雜sql
  • 支援讀寫分離
  • 支援延時連結
  • 結構對映
  • 事務支援
  • 多資料庫例項
  • 用例即文件
  • 條件外掛機制

程式碼方便,實現 87% 的測試覆蓋 試圖提供優質的程式碼供開發者使用

其sql 構建庫可單獨使用 實現自行構建複雜sql

如:


 s := gosql.NewSQLSegment()
     s.Flag("DISTINCT")
     s.Field("*")
     s.Table("tbl1.t1")
     s.Where("t1.status", "0")
     s.Where("name", "jack")
     s.Where("[!=]nick", "tom")
     s.Where("[in]role1", []string{"1", "2", "3", "4"})
     s.Where("[!in]role2", []string{"1", "2", "3", "4"})
     s.Where("[in]card1", 1)
     s.Where("[!in]card2", 1)
     s.Where(func(s *Clause) {
         s.Where("[>]age", "20")
         s.Where("[<]", "50")
     })
     s.Where("v1 = 1")
     s.Where("[#]v2 = ?", 2)
     s.Join("tbl3", "a", "=", "b")
     s.Having("class", "one")
     s.Where("[~]desc", "student")
     s.Where("[!~]desc", "teacher")
     s.Where("[exists]my_card", "select 1")
     s.Where("[!exists]my_card2", func(s *SQLSegments) {
         s.Table("tbl2.t2")
         s.Where("t2.id", 10000)
     })
     s.GroupBy("class","group")
     s.OrderBy("score desc", "name asc","age")
     s.Limit(30)
     s.Offset(10)
     s.ForUpdate()
     fmt.Println(s.BuildSelect())
 

構建出如下sql:

 


 SELECT DISTINCT *
 FROM `tbl1`.`t1`
     JOIN `tbl3` ON `a` = `b`
 WHERE (`t1`.`status` = ?
     AND `name` = ?
     AND `nick` != ?
     AND `role1` IN (?, ?, ?, ?)
     AND `role2` NOT IN (?, ?, ?, ?)
     AND `card1` IN (?)
     AND `card2` NOT IN (?)
     AND (`age` > ?
         AND `age` < ?)
     AND v1 = 1
     AND v2 = ?
     AND `desc` LIKE ?
     AND `desc` NOT LIKE ?
     AND EXISTS (
         SELECT 1
     )
     AND NOT EXISTS (
         SELECT *
         FROM `tbl2`.`t2`
         WHERE `t2`.`id` = ?
     ))
 GROUP BY `class`, `group`
 HAVING `class` = ?
 ORDER BY `score` DESC, `name` ASC, `age`
 LIMIT 10, 30
 FOR UPDATE

 


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/117022/golang-gosql-0-1-3-released
golang-gosql 釋出新版 v0.1.3,一款輕量級 Golang 操作 MySQL 的類庫已經有157次圍觀

http://coctec.com/news/soft/show-post-241878.html