Как я могу сопоставить результат с классом protobuf в mybatis mapper? В классе protobuf нет метода set. Должен ли я сгенерировать класс сущности с помощью newBuilder и метода сборки?
mybatis отображает класс, который сгенерировал protobuf
Ответы (2)
Да, это возможно. Когда вы генерируете классы модели из своего прото-файла, каждый из них имеет Builder (который расширяет GeneratedMessageV3.Builder). Итак, в определение модели вы можете добавить это, как в этом примере:
@ResultType(MyProto.Builder.class)
Это нормально работает, когда вы используете ResultHandler, поэтому вы можете вызвать метод сборки, например:
@Override
public void handleResult(ResultContext<? extends GeneratedMessageV3.Builder> resultContext) {
GeneratedMessageV3 proto = resultContext.getResultObject().build();
MyProto myproto = (MyProto)proto;
// do something with myproto
}
person
Antal Attila
schedule
11.05.2018
Есть уловка. Допустим, вы определили следующий 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_
и code_
используются вместо id
и code
.
person
wizawu
schedule
21.09.2019