JDBIでDropwizardを使用しています。ResultSetMapperの引数クラスを取得するJDBI
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
と呼ばれる別のテーブルに含まれている私は、ユーザーデータの典型的なDAOを持っています。今度は、Role
をマッパーにマップする必要がありますが、SELECT ...
ステートメントを変更してJOIN roles ...
部分を追加する必要はありません。私たちは皆、どのようにジョインがクエリーに影響するのかを知っていますし、長期的には可能ならばジョインを避けたいと思います。
私は知っている、そのResultSetMapper
のインターフェイスはを渡すmap()
メソッドを持っています。
named = {[email protected]} size = 3
0 = {[email protected]} "id" -> "1"
1 = {[email protected]} "name" -> "TestRole"
2 = {[email protected]} "class" -> "class com.example.Role"
しかしclass com.example.Role
がRole
のインスタンスではありません、それはArgument
のインスタンスだと、私はそれに取り組むことができない:そのコンテキストは、私が必要とするすべてのデータをBinding
クラスを返すgetBinding()
方法があります。
それで、Role
引数を取得する方法がありますか、私はそれを見ないか、バインディング引数からデバッグを示すようにインスタンス化する必要がありますか?
ロールで初めて何も行わないで、get roleメソッドを追加してユーザーのロールを設定します。ちなみに、あなたのジョイントにパフォーマンスの問題がある場合は、インデックス問題があると思います –
私はあなたが言うことを理解していません。 getメソッドをどこに追加しますか? –
'Role'がセットされた' User'の 'List'を取得しようとしている場合、または' String'が1つしかない場合は、私は取得できません –