您现在的位置是:首页 > 文章详情

golang-gosql 发布新版 v0.1.3,一款轻量级 Golang 操作 MySQL 的类库

日期:2020-07-08点击:502

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

 

原文链接:https://www.oschina.net/news/117022/golang-gosql-0-1-3-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章