Comments (39)
Grab 某team,用过 gorm 一段时间,受不了了,基于gendry 做了代码生成,非常喜欢
from gendry.
直接在这里评论吗
from gendry.
建议加入Join
from gendry.
建议可以像 Ctrip Apollo 项目 这样, 清晰明了,更容易让后来的人有信心去使用这个lib!
from gendry.
请问一下 , 在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不支持枚举类型也就没办法了。
from gendry.
where:=map[string]interface{}{
"a":1,
"b":2,
"c>":3
}如果abc是复合索引
生成的sqlwhere可能是 a=1 and c>3 and b=2 不能控制where顺序 会导致 索引不命中的情况么
@overcls 最左匹配原则看的不是这个顺序。是否命中索引是和你where中有哪些条件有关,和where中条件的顺序无关,数据库会处理顺序的问题
from gendry.
@mysterytree 是的
from gendry.
@SammyLee666 不知道这个功能怎么用,能给个wiki吗
from gendry.
company | project | suggestion |
---|---|---|
杭州群友文化创意有限公司 | 书城,多媒体运营工具 | 已经用了半年了,使用下来体感还是不错的 |
from gendry.
这个库的语法新奇,建议一些参数的命名follow下原生sql
from gendry.
@daaaabeen 能给点具体的例子吗?
from gendry.
@daaaabeen 能给点具体的例子吗?
将 limit 、group by 、having 等操作放到where 里,这样设计感觉不太合理
from gendry.
@daaaabeen 严格地讲,确实是这样的。但是Gendry的目的其实就是想简化写sql,而且希望支持的仅仅是简单sql,也就是能够通过map[k][v]就能描述清楚的场景,所以把非where部分也放到了这里面。基本上目前大部分够用了,如果有不够用的场景,就用NamedQuery自己手写sql
from gendry.
请问可以支持 & 等位运算符吗?
例如 select * from table where id & 1;
from gendry.
请问可以支持 & 等位运算符吗?
例如 select * from table where id & 1;
@QAQVictor 不支持
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能
from gendry.
Grab 某team,用过 gorm 一段时间,受不了了,基于gendry 做了代码生成,非常喜欢
哈哈,感谢!大家的满意是我们最大的动力
from gendry.
replace
求加啊 感谢兄die
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能
求加啊 感谢兄die
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能
求加啊 感谢兄die
已经加入排期了
from gendry.
Grab +1
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能
gendry也是支持pgsql的吗?
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能
gendry也是支持pgsql的吗?
@betazk 需要你把生成的sql中的placeholder做一个替换,因为mysql是?而pg是$
from gendry.
不错,支持一下,希望这个项目能持续维护下去。
company | project | suggestion |
---|---|---|
杭州云桔物联科技有限公司 | 基于gendry builder 生成sql语句 | 项目能持续维护下去 |
能否支持JOIN 语句(还是只能用NamedQuery去实现JOIN语句?) |
from gendry.
请问一下 , 在scanner.Scan 的时候 , 如果是切片类型,查找不到结果为什么是是用nil返回而不是返回 ErrEmptyResult 的错误?
from gendry.
希望支持 PostgreSQL,现在我们需要 strings.Replace(? , $),谢谢
你们现在正在用gendry帮pg生成sql吗?单纯做个replace还好,不过如果你们已经在用pg上用gendry了,我可以支持一下设置placeholder的功能,比replace稍微提高一点点性能
gendry也是支持pgsql的吗?
@betazk 需要你把生成的sql中的placeholder做一个替换,因为mysql是?而pg是$
现在还没有支持能够设置 placeholder呢
from gendry.
现在貌似不支持join?
from gendry.
现在貌似不支持join?
不支持,只能用builder.NamedQuery手写。不支持join的原因是,join过于复杂,join里又可能套join,最后map就没法看了,你自己可能都看不懂自己在写啥。所以对于复杂的sql一直推荐直接手写,还直观
from gendry.
希望update操作也支持_limit,现在在update里面用_limit会报“sql: converting argument $3 type: unsupported type []uint, a slice of uint”错误
from gendry.
from gendry.
希望update操作也支持_limit,现在在update里面用_limit会报“sql: converting argument $3 type: unsupported type []uint, a slice of uint”错误
@jsyzchen @gangzhou 这个可以加上,今天下班回去给支持
from gendry.
@jsyzchen @gangzhou done, pls upgrade to v1.6.0
from gendry.
scanner是把一个查询结果集(rows)scan到struct,在构造查询语句阶段希望能提供一个反向功能,通常在使用的时候都通过model把数据库的表结构做好了映射,然后赋值时用这个model struct作为约定去赋值,这时候在用gendry的话就需要把strcut转为[]map[string]interface{},如果官方能提供这样的功能那会方便很多,尤其是在insert和update的时候,可以参考sqlx的NamedQuery
补充说明一下,主要是针对insert和update的data参数
from gendry.
where:=map[string]interface{}{
"a":1,
"b":2,
"c>":3
}
如果abc是复合索引
生成的sqlwhere可能是 a=1 and c>3 and b=2 不能控制where顺序 会导致 索引不命中的情况么
from gendry.
Grab 某team,用过 gorm 一段时间,受不了了,基于gendry 做了代码生成,非常喜欢
好奇求问 gorm 主要「受不了了」的地方在哪里,因为没有用过 orm ,看文档感觉优点也挺多的,想看看缺点在哪方面。
from gendry.
where:=map[string]interface{}{
"c":[]int{3,4}
}
如果这种场景下c的有运算符的话是不是可以默认 加一个in进去,而不是=呢?
ps:参考"github.com/Masterminds/squirrel" 这个包的 where的实现。
from gendry.
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
from gendry.
多个or查询条件支持,
支持条件中使用函数带空格
#123
from gendry.
Related Issues (20)
- Scanner 的 bind 函数不支持 当值是 time.Time 时 reflect.Scanner 接口 HOT 5
- Where 过滤能否单独开放出来 HOT 4
- builder.BuildSelect where参数传递的map[string]interface{}在生成sql的时候where顺序随机生成,导致生成sql不走索引 HOT 1
- NamedQuery 支持嵌套 map[string]interface{}, 实现过滤条件
- 是否支持MySQL关键词 HOT 2
- scanner.Scan返回错误码 HOT 3
- buildDelete不支持limit操作 HOT 1
- 请问下, BuildInsertOnDuplicate方法支持如下的sql吗? HOT 3
- 支持force index操作吗
- "[scanner]: empty result" HOT 4
- 请问可以支持UNION ALL语句吗? HOT 1
- 支持多个 or 查询 HOT 1
- scanner在go继承模式下,无法scan到父级tag HOT 1
- 请求打个最新版本的tag HOT 1
- mysql传limit句柄错误 HOT 9
- 您好,支持 IS NOT NULL吗?在文档里没有看到 HOT 2
- 对rows进行scan后, 需要检查err
- scan不支持结构体嵌套赋值
- where语句中两列数据相互比较,如何正确声明查询条件呢? HOT 5
- scan 对于继承的struct不生效 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gendry.