DevOps:leehi9817
Map을 사용한 파라미터 바인딩 본문
파라미터 클래스(Vo)가 존재하지 않고 여러 값을 파라미터로 넘겨야 할 때 Map을 사용한다.
사용할 여러 값의 묶음이 일회성으로 사용되어 Vo를 만들기에 비효율적일 경우에 Map을 사용하면 Vo를 만들지 않고도 파라미터 값들을 넘길 수 있다.
다음 예시에서는 Dao의 personInsert()을 이용하여 phonebook.xml 파일의 insert문으로 파라미터 값을 넘긴다.
Map<키, 값>에 해당하는 자료형으로 키와 값이 둘다 문자열 자료형일 경우 Map<String, String>으로 표현한다.
Map에 키와 값을 넣을 때는 personMap.put("키", 값) 형태로 넣는다.
Map을 사용했을 때의 파라미터는 Vo의 [변수명=값, 변수명=값, ... ]과 유사한 {키=값, 키=값, ... } 형태로 저장된다.
//phoneDao.java
public int personInsert(PersonVo personVo) {
//Vo 만드는 대신 Map 형태로 데이터 넘기기
Map<String, String> personMap = new HashMap<String, String>();
personMap.put("name", name);
personMap.put("hp", hp);
personMap.put("company", company);
//{키=값, 키=값, ...} 형태로 저장
//{name=이혜인, hp=010-2222-2222, company=02-2222-2222}
int count = sqlSession.insert("phonebook.insert", personMap);
}
Dao에서 Map을 사용하기 위해서는 SQL 파일을 수정 해야한다.
SQL의 파라미터 타입을 parameterType="map" 으로 수정해주면 Map에서 넘겨받은 파라미터를 사용할 수 있다.
<!-- phonebook.xml -->
<!-- 전화번호 추가 -->
<insert id="insert" parameterType="map">
<![CDATA[
insert into person
values (seq_person_id.nextval, #{name}, #{hp}, #{company})
]]>
</insert>
Comments