我想利用gRPC 和 xorm 实现数据库查询
比如:
```go
type Info struct{
Age int //数据库中此字段是int
}
```
由于gRPC中只有int32类型
所以只能:
```go
message _Info struct{
int32 Age = 1;
}
```
数据库查询的时候由于字段类型的缘故
无法直接以 `Get(&_Info)`来获取,并直接传输走
只能进行赋值
```go
info :=Info{}
Get(&info)
_Info.Age = info.Age
```
再把`_Info`传输走
但是如果查询的结构体中字段超多怎么办?
只能一个个对应赋值么?
有没有别的优雅点的办法
(我知道golang 有个net/rpc库,支持int。但我就是想知道用gRPC的话怎么解决)
是这样的
用xorm框架的话,操作数据库,struct里面不能用int32这个类型。
xorm是int类型代表了除64位以外的int。64的用BigInt
所以利用xorm就用不了int32,如果用int32的话搜不到东西。
所以我现在 proto + xorm 就不得不出现两个结构体, xorm:int版本结构体 , proto:int32版本结构体。。。
这之间就必须出现一个赋值操作,就感觉很蛋疼
#24
更多评论
你这个跟`xorm` `gRPC`没什么关系吧。 xorm 映射的结构体是 `Info`, gRPC对应的是 `_Info`,两个结构体除了看着像,根本就不是一个struct。首先就不能被`int`和`int32`带偏了。可以按照1L说的那样写个工具类,比如类似Java的 `BeanUtils.copyProperties`
#2