ArgumentFactory 在 JDBI v2 中如何工作?

问题描述

有大量关于使用 jdbi 3 的 ArgumentFactory(扩展 AbstractArgumentFactory 等)的文档和示例,但关于 jdbi 2 的文档和示例并不多,我一直坚持使用。

我希望能够绑定 List<ThirdPartyPixel> ,后者是自定义类型。我只关心这个自定义类型中的 2 个字段,一个 enum trackingEventType 和 String url。所以我写了这个:

import org.json.JSONObject;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.Argument;
import org.skife.jdbi.v2.tweak.ArgumentFactory;

public class ThirdPartyPixelArgumentFactory implements ArgumentFactory<ThirdPartyPixel> {

  @Override
  public boolean accepts(Class<?> expectedType,Object value,StatementContext ctx) {
    return value != null && ThirdPartyPixel.class.isAssignableFrom(value.getClass());
  }

  @Override
  public Argument build(Class<?> expectedType,final ThirdPartyPixel value,StatementContext ctx) {
    return (position,statement,ctx1) -> {
      final String serializedTrackingPixel = new JSONObject()
          .put("trackingEventType",value.getTrackingEventTypeValue())
          .put("url",value.getUrl())
          .toString();
      statement.setString(position,serializedTrackingPixel);
    };
  }
}

我相信这将使 jdbi 处理程序可以将 ThirdPartyPixel 转换为支持的类型,例如一个包含我感兴趣的 2 个字段的 JSON 序列化的字符串。

我有两个问题。

  1. 这就是我必须做的所有事情才能使这些 List 的绑定也起作用吗?或者我是否真的需要为 List<ThirdPartyPixel> 创建一个 ArgumentFactory,而不仅仅是我的自定义类型。

  2. 我在哪里告诉它有关“反向”映射的信息,i.e. 每当从列中读取一个字符串时,就会反序列化回 ThirdPartyPixel

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)