나는 쌓입니다. 나는 mybatis에 찬성하여 SQL의 직접적인 사용을 대체하고자한다. faramework. 채워진 속성 맵이있는 계정 목록을 선택하고 싶습니다. MyBatis의 콜렉션 ('select *')을 매핑합니다.
그러나이 계정의 시작, 첫 번째 계정 클래스public class Account {
private int id;
...
private Map<String, String> properties;
...
//setters/getters
}
매퍼 인터페이스에서 시작할 수 있습니다 분명하다 및 매핑 파일은 선택
<select id="getAccountById" resultMap="account">
select ... from account where id = #{id}
</select>
<select id="getAccountProperties" resultType=map>
select * from properties where id=#{id}
</select>
첫 번째 선택 반환 계정
개체, 두 번째 java.util의이 포함되어 있습니다. 지도에는 열 이름/ 값 쌍이 포함되어 있습니다.나는 각 계정 개체가 속성으로지도를 포함, 그래서 계정의 목록을 반복하고 ID로
for(Account account : accountList) {
int id = account.getId();
Map properites = mapper.getAccountProperties(id);
account.setProperties(properties);
}
을 해당 속성을 선택하고 기본적으로는 작동하지만 200 개 계정은 약 2 분 정도 소요 싶습니다 , 그리고 그것은 받아 들일 수 없다.
collection
으로 resultMap
을 사용하면 속도가 빨라지기를 바랍니다. 그러나 문제는 어떻게해야합니까 . resultMap="account"
은 어떻게 표시되어야합니까
<resultMap id="account" type="Account">
<id property="id" column="id">
...
<collection property="properties" javaType="map" column="id" select="getAccountProperties" />
</resultMap>
이 경우 선택한 계정 개체에는 속성이 없습니다. 큰 질문은 다음과 같습니다. 속성을 계정 개체와 연결하는 방법은 무엇입니까?