내 보조 DB에서 내 기본 DB에서 이름을 가져 오는 테이블에 액세스하려고합니다. 내 어려움은 내 보조 쿼리에 매개 변수로 "DB-Name"을 전달하는 것입니다 (BTW는 MyBatis 주석 기반 Mappers를 사용하고 있습니다).mybatis - @One annotation에 여러 매개 변수 전달
이 내 매퍼
@SelectProvider(type = DealerQueryBuilder.class, method = "retrieveDealerListQuery")
@Results({
@Result(property="dealerID", column="frm_dealer_master_id"),
@Result(property="dealerTypeID", column="frm_dealer_type_id", [email protected](select="retrieveDealerTypeDAO")),
@Result(property="dealerName", column="frm_dealer_name")
})
public List<Dealer> retrieveDealerListDAO(@Param("firmDBName") String firmDBName);
@Select("SELECT * from ${firmDBName}.frm_dealer_type where frm_dealer_type_id=#{frm_dealer_type_id}")
@Results({
@Result(property="dealerTypeID", column="frm_dealer_type_id"),
@Result(property="dealerType", column="frm_dealer_type")
})
public DealerType retrieveDealerTypeDAO(@Param("firmDBName") String firmDBName, @Param("frm_dealer_type_id") int frm_dealer_type_id);
내 "기본 DB"에서 얻어진하신 firmDBName입니다.
- 두 번째 쿼리에서 $ {firmDBName}을 생략하면 쿼리가 내 기본 데이터베이스에 액세스하려고 시도하고 "PrimaryDB.frm_dealer_type"테이블을 찾을 수 없습니다. 그래서 기본적으로 내 기본 DB에서 "frm_dealer_type"이라는 테이블을 검색하려고합니다.
내가
@Result (특성 = "dealerTypeID"같은 @Result를 다시 작성하려고하면, 열 = "firmDBName = firmDBName, frm_dealer_type_id = frm_dealer_type_id"하나 = 하나 (선택 = "retrieveDealerTypeDAO"@)),
"firmDBName"열이 존재하지 않는다는 오류가 발생합니다.
- $ {firmDBName}을 # {firmDBName} (으)로 변경해도 도움이되지 않았습니다.
나는이 블로그를 참조 않았다 - here
내가 원하는 솔루션을 보조 쿼리로 내 기본 쿼리에서 내 매개 변수 firmDBName을 전달합니다.
에 지정된 열 이름이 {PARAMETER_NAME = COLUMN_NAME}는 DB 테이블에 존재하지 않는, 어떻게 통과 할 경우 참조 할 수 있습니다 매개 변수 _ 이름의 값은 변수 형식이므로 {parameter_Name = _my_variable_}입니까? – Razvi
dB 테이블에 있어야 할 필요는 없으며 sqlprovider에 의해 생성 된 select에서 반환되어야합니다. 만약 당신이 자바 코드를 제공 할 수 있다면, 나는 그것을 고치는 방법을 보여 줄 수있다. 테스트 케이스를 볼 수 없으면 내 대답에 링크되어 있으며 첫 번째 선택에서 어떻게 반환되는지 확인할 수 있습니다. – h3adache
DB 이름을 반환 값으로 선택하고 사용자 지정 열 이름을 반환 열의 이름을 매핑합니다. 문제가 해결되었습니다. 감사 – Razvi