pooney
article thumbnail

 

 

객체 안에 있는 콜렉션이나 객체에 값을 넣어야하는 경우가 발생한다 이때 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에 정상적으로 값이 들어가 간것을 확인 할 수 있다. 

 

 

profile

pooney

@pooney

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!