Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

user collection 用户征集 #30

Open
caibirdme opened this issue Dec 4, 2018 · 39 comments
Open

user collection 用户征集 #30

caibirdme opened this issue Dec 4, 2018 · 39 comments

Comments

@caibirdme
Copy link
Contributor

caibirdme commented Dec 4, 2018

To make gendry better and better, we want to know how many of you used it in your project and what functions gendry could provide to ease your burden. Please tell us about it, your company name, or your personal project. A long list could make gendry more convincing and attractive. eg:

company project suggestion
Didi滴滴出行 widely used in many projects could it be faster
personal myproject_foo could you support sql.NullXXX type in scanner

Don't mind about the format, just share it with us!

为了让gendry更好的升级和维护,我们想要知道有多少项目正在使用它。如果你在公司项目或者个人项目中使用了gendry,请告诉我们,同时你对gendry的建议对我们来说也很重要!如果我们能收集一份长长的用户列表,也会使项目更具有说服力,吸引更多用户。

@caibirdme caibirdme changed the title user collection user collection 用户征集 Dec 4, 2018
@mysterytree
Copy link

直接在这里评论吗

@caibirdme
Copy link
Contributor Author

@mysterytree 是的

@leeyuanzhang
Copy link

建议加入Join

@caibirdme
Copy link
Contributor Author

@SammyLee666 不知道这个功能怎么用,能给个wiki吗

@aprchen
Copy link

aprchen commented Apr 15, 2019

company project suggestion
杭州群友文化创意有限公司 书城,多媒体运营工具 已经用了半年了,使用下来体感还是不错的

@daaaabeen
Copy link
Contributor

daaaabeen commented May 15, 2019

这个库的语法新奇,建议一些参数的命名follow下原生sql

@caibirdme
Copy link
Contributor Author

@daaaabeen 能给点具体的例子吗?

@daaaabeen
Copy link
Contributor

@daaaabeen 能给点具体的例子吗?

将 limit 、group by 、having 等操作放到where 里,这样设计感觉不太合理

@caibirdme
Copy link
Contributor Author

@daaaabeen 严格地讲,确实是这样的。但是Gendry的目的其实就是想简化写sql,而且希望支持的仅仅是简单sql,也就是能够通过map[k][v]就能描述清楚的场景,所以把非where部分也放到了这里面。基本上目前大部分够用了,如果有不够用的场景,就用NamedQuery自己手写sql

@QAQVictor
Copy link

请问可以支持 & 等位运算符吗?
例如 select * from table where id & 1;

@caibirdme
Copy link
Contributor Author

请问可以支持 & 等位运算符吗?
例如 select * from table where id & 1;

@QAQVictor 不支持

@ithinco
Copy link

ithinco commented Jul 4, 2019

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

@zhaitianduo
Copy link

Grab 某team,用过 gorm 一段时间,受不了了,基于gendry 做了代码生成,非常喜欢

@caibirdme
Copy link
Contributor Author

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能

@caibirdme
Copy link
Contributor Author

Grab 某team,用过 gorm 一段时间,受不了了,基于gendry 做了代码生成,非常喜欢

哈哈,感谢!大家的满意是我们最大的动力

@mysterytree
Copy link

replace

求加啊 感谢兄die

@mysterytree
Copy link

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能

求加啊 感谢兄die

@caibirdme
Copy link
Contributor Author

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能

求加啊 感谢兄die

已经加入排期了

@LitoMore
Copy link

Grab +1

@betazk
Copy link

betazk commented Aug 27, 2019

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能

gendry也是支持pgsql的吗?

@caibirdme
Copy link
Contributor Author

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能

gendry也是支持pgsql的吗?

@betazk 需要你把生成的sql中的placeholder做一个替换,因为mysql是?而pg是$

@leeyongda
Copy link

leeyongda commented Nov 11, 2019

不错,支持一下,希望这个项目能持续维护下去。

company project suggestion
杭州云桔物联科技有限公司 基于gendry builder 生成sql语句 项目能持续维护下去
能否支持JOIN 语句(还是只能用NamedQuery去实现JOIN语句?)

@JHxx1229
Copy link

请问一下 , 在scanner.Scan 的时候 , 如果是切片类型,查找不到结果为什么是是用nil返回而不是返回 ErrEmptyResult 的错误?

@Colstuwjx
Copy link
Contributor

建议可以像 Ctrip Apollo 项目 这样, 清晰明了,更容易让后来的人有信心去使用这个lib!

@caibirdme
Copy link
Contributor Author

请问一下 , 在scanner.Scan 的时候 , 如果是切片类型,查找不到结果为什么是是用nil返回而不是返回 ErrEmptyResult 的错误?

@JHxx1229 , 抱歉之前看漏了你的问题。当Scan一个struct,由于struct每个字段都有默认值,用户无法判断到底结果集就是 0 0 "",还是说根本没取到数据,因此必须通过ErrEmptyResult来告诉用户。但是当Scan一个slice时,没取到len就是0,这样就能够很容易地判断了。这里确实有不一致,主要考虑的点是,没取到数据是正常的,不是错误,不应该用error来表示。一般如果有error就是真的出错了,使用方直接return err即可。但是由于我上面说的,Scan struct时用户没法知道到底取没取到数据,这才加上的ErrEmptyResult 。这也导致用户即使拿到error返回,还得额外做一个判断看是否是空集合。最好的方式是Rust那样使用Option枚举值来指示结果,但是Go不支持枚举类型也就没办法了。

@0xleizhang
Copy link

希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢

你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能

gendry也是支持pgsql的吗?

@betazk 需要你把生成的sql中的placeholder做一个替换,因为mysql是?而pg是$

现在还没有支持能够设置 placeholder呢

@willerdong
Copy link

现在貌似不支持join?

@caibirdme
Copy link
Contributor Author

现在貌似不支持join?

不支持,只能用builder.NamedQuery手写。不支持join的原因是,join过于复杂,join里又可能套join,最后map就没法看了,你自己可能都看不懂自己在写啥。所以对于复杂的sql一直推荐直接手写,还直观

@jsyzchen
Copy link

jsyzchen commented Dec 8, 2020

希望update操作也支持_limit,现在在update里面用_limit会报“sql: converting argument $3 type: unsupported type []uint, a slice of uint”错误

@gangzhou
Copy link

gangzhou commented Dec 8, 2020 via email

@caibirdme
Copy link
Contributor Author

希望update操作也支持_limit,现在在update里面用_limit会报“sql: converting argument $3 type: unsupported type []uint, a slice of uint”错误

@jsyzchen @gangzhou 这个可以加上,今天下班回去给支持

@caibirdme
Copy link
Contributor Author

@jsyzchen @gangzhou done, pls upgrade to v1.6.0

@shawti
Copy link

shawti commented Dec 25, 2020

scanner是把一个查询结果集(rows)scan到struct,在构造查询语句阶段希望能提供一个反向功能,通常在使用的时候都通过model把数据库的表结构做好了映射,然后赋值时用这个model struct作为约定去赋值,这时候在用gendry的话就需要把strcut转为[]map[string]interface{},如果官方能提供这样的功能那会方便很多,尤其是在insert和update的时候,可以参考sqlx的NamedQuery

补充说明一下,主要是针对insert和update的data参数

@overcls
Copy link

overcls commented Jan 14, 2021

where:=map[string]interface{}{
"a":1,
"b":2,
"c>":3
}

如果abc是复合索引
生成的sqlwhere可能是 a=1 and c>3 and b=2 不能控制where顺序 会导致 索引不命中的情况么

@caibirdme
Copy link
Contributor Author

caibirdme commented Jan 14, 2021

where:=map[string]interface{}{
"a":1,
"b":2,
"c>":3
}

如果abc是复合索引
生成的sqlwhere可能是 a=1 and c>3 and b=2 不能控制where顺序 会导致 索引不命中的情况么

@overcls 最左匹配原则看的不是这个顺序。是否命中索引是和你where中有哪些条件有关,和where中条件的顺序无关,数据库会处理顺序的问题

@xiekeyi98
Copy link
Contributor

Grab 某team,用过 gorm 一段时间,受不了了,基于gendry 做了代码生成,非常喜欢

好奇求问 gorm 主要「受不了了」的地方在哪里,因为没有用过 orm ,看文档感觉优点也挺多的,想看看缺点在哪方面。

@voctior
Copy link
Contributor

voctior commented Feb 20, 2021

where:=map[string]interface{}{
"c":[]int{3,4}
}
如果这种场景下c的有运算符的话是不是可以默认 加一个in进去,而不是=呢?
ps:参考"github.com/Masterminds/squirrel" 这个包的 where的实现。

@voctior
Copy link
Contributor

voctior commented Feb 20, 2021

where:=map[string]interface{}{
"c":[]int{3,4}
}
如果这种场景下c的有运算符的话是不是可以默认 加一个in进去,而不是=呢?
ps:参考"github.com/Masterminds/squirrel" 这个包的 where的实现。

附带实现的mr,如果有时间可以帮忙审查下
https://github.com/didi/gendry/pull/109/files

@twz915
Copy link

twz915 commented Nov 19, 2021

多个or查询条件支持,
支持条件中使用函数带空格
#123

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests