객체 안에 있는 콜렉션이나 객체에 값을 넣어야하는 경우가 발생한다 이때 mybatis의 collection 태그를 이용하여 해결 할 수 있다.
collection 태그
controller
@Controller
public class HomeController {
@Inject
SqlSession sqlSession;
@RequestMapping(value = "addlist", method = RequestMethod.GET)
public String addlist() {
System.out.println("addlist");
List<TestClass> list = sqlSession.selectList("list.selectlist");
System.out.println(list);
return "index";
}
}
TestClass
@Data
public class TestClass {
private String id;
private String pwd;
private List<String> namelist;
}
DB테이블
test1 테이블
test2 테이블
mapper.xml
collection 태그의 column은 selectlist에서 조회된 id 값을 파라미터 selectnamelist에게 넘겨 조회 하게 된다.
또한 select 속성은 또 다른 select를 나누어 실행 가능하게 할 수 있다.
<mapper namespace="list">
<resultMap type="com.ex.test.TestClass" id="ResultMap">
<id property="id" column="id" />
<id property="pwd" column="pwd" />
<collection property="namelist" column="id" select="selectnamelist"/>
</resultMap>
<select id="selectnamelist" resultType="string">
select name from test2 where id = #{id}
</select>
<select id="selectlist" resultMap="ResultMap">
select * from test1
</select>
</mapper>
addlist 요청 화면
결과
TestClass에 멤버변수 namelist에 정상적으로 값이 들어가 간것을 확인 할 수 있다.
'Spring' 카테고리의 다른 글
Spring mybatis 단일파라미터 전송시 no getter 에러 (0) | 2020.05.09 |
---|---|
Spring mybatis resultMap (0) | 2020.05.07 |
Spring Cannot create PoolableConnectionFactory 에러 (0) | 2020.05.06 |
Spring Mapped Statements collection does not contain value for 에러 (0) | 2020.05.05 |
Spring mybatis 쿼리 리턴 유형 (0) | 2020.05.05 |