如何将结果映射到 mybatis 映射器中的 protobuf 类?protobuf 类中没有 set 方法。我应该使用 newBuilder 和 build 方法生成实体类吗?
问问题
435 次
2 回答
0
有个窍门。假设您定义了以下 protobuf,
package com.example.protobuf;
message HelloMessage {
string id;
uint32 code;
}
你可以拥有HelloMapper
这样的,
<resultMap id="helloMessageMap" type="com.example.protobuf.HelloMessage">
<result column="id" property="id_"/>
<result column="code" property="code_"/>
</resultMap>
<select id="selectHelloMessage" resultMap="helloMessageMap">
select id, code from example
</select>
请注意id_
andcode_
被用来代替id
and code
。
于 2019-09-21T08:26:50.367 回答
0
是的,这是可能的。在您从 proto 文件生成模型类时,它们中的每一个都有一个 Builder(扩展 GeneratedMessageV3.Builder)。因此,在您的模型定义中,您可以添加它,如下例所示:
@ResultType(MyProto.Builder.class)
当您使用 ResultHandler 时,这可以正常工作,因此您可以调用 build 方法,例如:
@Override
public void handleResult(ResultContext<? extends GeneratedMessageV3.Builder> resultContext) {
GeneratedMessageV3 proto = resultContext.getResultObject().build();
MyProto myproto = (MyProto)proto;
// do something with myproto
}
于 2018-05-11T13:07:07.113 回答