JDBI在ResultSetMapper中获取参数类

时间:2017-05-08 01:52:37

标签: java dropwizard jdbi

我正在使用Dropwizard和JDBI。我有一个典型的用户数据dao:

public interface UserDao
{
  @SqlQuery("select * from users where role = :id")
  @Mapper(UserMapper.class)
  String findNameById(@BindBean Role role);
}

用户自己拥有Role类型的属性:

class User
{
    private Role role;

    /* the rest: other attributes, getters, setters, etc. */
}

角色包含在另一个名为roles的表中。现在,我需要在映射器中映射Role,但我不想更改SELECT ...语句以添加JOIN roles ...部分。我们都知道连接如何影响查询,从长远来看,我希望尽可能避免任何连接。

我知道,ResultSetMapper接口有map()方法,传递给它StatementContext。该上下文有一个getBinding()方法,它返回一个Binding类,包含我需要的所有数据:

named = {HashMap$Node@1230} size = 3
  0 = {HashMap$Node@1234} "id" -> "1"
  1 = {HashMap$Node@1235} "name" -> "TestRole"
  2 = {HashMap$Node@1236} "class" -> "class com.example.Role"

但是class com.example.Role不是Role的实例,它是Argument的一个实例,我无法使用它。

那么,有没有办法获得Role参数而我只是没有看到它或者我必须从绑定参数中实例化它(再次......)(显然它们在那里如调试器所示)?

0 个答案:

没有答案