首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jmoiron SQLX Golang通用接口

Jmoiron SQLX Golang通用接口
EN

Stack Overflow用户
提问于 2016-08-17 10:43:40
回答 2查看 1.4K关注 0票数 1

我对golang很陌生,我使用Jmoiron包查询Postgres数据库(选择查询)。我正在做的waY是创建一个string并调用Select(dest接口{},query,args)方法。虽然它工作得很好,但问题是我正在动态地生成sql字符串,因此每个响应的目标结构应该是不同的。

对于ex:-一个查询可以是

代码语言:javascript
复制
Select a,b,c,d from table A ;

另一个可能是

代码语言:javascript
复制
Select x,y,z from Table B;

据我所知,为Select的工作定义了两个不同的结构:

代码语言:javascript
复制
Struct Resp1{
   a string
   b string
   c  string
   d string
}

和,

代码语言:javascript
复制
Struct Resp2{
   x string
   y string
   z  string

}

然后调用select作为db.Select(&resp1,query,args)db.Select(&resp2,query,args),我想如果我可以定义一个公共结构的话

代码语言:javascript
复制
say Resp3{
   a string
   b string
   c  string
   d string
   x string
   y string
   z  string
}

基于我的select查询,只填充匹配的列(即第一列仅为a,b,c,d,第二列为x,y,z)。

我试着搜索,但找不到任何线索。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-23 15:13:01

我无法在这里得到答案,因为我需要这个,我自己挖出来,我找到了一个有效的方法来解决这个问题。

要解决这个问题,可以将所有字符串值定义为sql.NullString,整数定义为sql.int64,浮点数定义为sql.float64等等。

假设你的表有a,b,c,d,e,f列,对于某些响应,你只需要显示a,b,d,对于其他的d,e等等。而不是在db.Select(.)中创建不同的结构并映射它们语句定义您的结构,如下所示

代码语言:javascript
复制
a       sql.NullString `json:"whatever u wish to have as key,omitempty"`
b       sql.NullString `json:"b,omitempty"`
c       sql.NullString `json:"c,omitempty"`
d       sql.int64  `json:"d,omitempty"`
e       sql.float64  `json:"e,omitempty"`

记住,sql.NullString将被编组为json,并显示一个额外的键(有效:布尔值)。您可以按照这里的方法来修复这个How can I work with sql NULL values and JSON in Golang in a good way?

希望这对某人有帮助!

票数 1
EN

Stack Overflow用户

发布于 2016-08-17 11:01:18

通常,您的struct应该表示SQL表的所有字段,而不仅仅是在SELECT中获取的字段,因此您可以只执行SELECT * FROM...并将响应从db反序列化到结构Resp3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38994419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档