Jmoiron SQLX Golang通用接口

I am new to golang and using Jmoiron Sqlx package for querying the Postgres Database(select query) . The waY I am doing is creating a sql string and calling Select(dest interface{}, query string,args) method. While it works well , the problem is I am generating my sql String dynamically and as such the destination structure should be different for each response .

For ex : - One query can be

Select a,b,c,d from table A ;

the other can be

Select x,y,z from Table B;

From what i understand , there should be two different structs defined for Select Method to work i.e.

Struct Resp1{
   a string
   b string
   c  string
   d string
}

And,

Struct Resp2{
   x string
   y string
   z  string

}

And then invoke select as db.Select(&resp1,query,args) and db.Select(&resp2,query,args) I am thinking if its possible for me to define a common Struct

say Resp3{
   a string
   b string
   c  string
   d string
   x string
   y string
   z  string
}

And based on my select query populates only the matching columns (i.e only a,b,c,d for first and x,y,z for second) .

I tried searching but couldnt get any leads .

I could not get answer to this here and since I needed this , I dug up myself and I found how to solve this in an efficient way .

To solve this one can define all your String values as sql.NullString , integer as sql.int64 , float as sql.float64 etc .

So Say your table is having columns a,b,c,d,e,f and for some response you only have to display a,b,d for some other d,e and so on . Instead of creating different structures and mapping them in db.Select(...) statement Just define ur struct as follows

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"`

Remember sql.NullString will be Marshalled to json with an additional key displayed (Valid:boolean) . You can follow approach here to fix that How can I work with sql NULL values and JSON in Golang in a good way?

Hope this is helpful to someone.!!

Usually your struct should represent all fields of SQL table, not only fields that you are fetching in SELECT, so you can just do SELECT * FROM... and deserialize response from db to your struct Resp3.