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 ...
부분을 추가하고 싶지 않습니다. 우리는 조인이 쿼리에 어떻게 영향을 주는지, 그리고 장기적으로 가능한 경우 조인을 피하고 싶습니다.
저는 인터페이스에 메서드가 있고, StatementContext
이 전달된다는 것을 알고 있습니다. 그 상황은 내가 필요로하는 모든 데이터로 Binding
클래스를 반환하는 getBinding()
방법이 있습니다
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
의 인스턴스이고 나는 그것이 작동하지 않을 수 있습니다.
그래서, Role
인수를 얻는 방법이 있습니까? 그냥 볼 수 없거나 바인딩 인수 (다시 그들은 디버거가 보여줍니다)에서 다시 인스턴스화해야합니까?
처음으로 역할을 수행하지 않은 다음 get role 메소드를 추가하여 사용자의 역할을 설정하십시오. 그건 그렇고, 당신의 관절에 성능상의 문제가 있다면 나는 인덱스 문제가 있다고 생각합니다. –
당신이 말하는 것을 이해하지 못합니다. 어디서 get 메소드를 추가할까요? –
'Role'이 설정된'User'의'List' 또는 하나의'String'을 얻으려는 시도가 없다면 얻을 수 없습니다 –