스프링에서 CRUD를 해줄 때 parameter를 두개 이상 넘겨주고 싶을 때가 있다.
MVC Model 2 방식으로 했을 때는 쉽게 했던 것 같은데 스프링에서는 또 새롭다.
DAO 말고는 변수 두개 이상 써도 아무말도 없더니 DAO 가면 안된다고 해버린다.
너 빼고 다른애들 다 된다는데 왜 너만..!
내가 알아낸 방법은 두가지가 있다.
첫번째! vo로 넘겨주기
변수를 vo로 합쳐서 넘겨준다.
따로 @RequestParam에서 지정해 줄 필요 없이 넘겨줄 수 있다.
insert가 아닌 select문에서는 vo.get변수명()으로 지정해 준다.
나는 select문 보다는 insert, update, delete문에서 더 많이 사용했던 것 같다.
두번째! HashMap으로 넘겨주기
나는 session에 지정해준 id와 게시물 주인의 id를 함께 넣어줘야 했기 때문에 vo를 쓰기 싫고 변수를 지정해서 넣어줄 필요가 있었다.
Dao 말고는 모두 (변수1, 변수2,..) 써주어도 된다.
<select id="followchk" parameterType="java.util.HashMap" resultType="GnBoard">
select count(*) follow from follow where m_id1=#{my_name}
and m_id2=#{m_id}
</select>
여기서 꼭 바꿔야 할 것은 parameterType이다.
parameterType="java.util.HashMap"이라고 대소문자 구분해서 꼭 써주어야 HashMap으로 데이터를 받아올 수 있다.
public GnBoard followchk(String my_name, String m_id) {
HashMap<String, String> my_info = new HashMap<String, String>();
my_info.put("m_id", m_id);
my_info.put("my_name", my_name);
return sqlSession.selectOne("GnBoard.followchk", my_info);
}
문제의 DAO에서 HashMap을 생성해주고 생성해준 my_info에 변수 값을 넣어준다.
나는 key와 value가 모두 String 타입이기 때문에 둘 다 String으로 생성해주었다.
그리고 my_info를 리턴해준다.
여기서 my_name이 session id 였는데 문제 없이 잘 들어갔다.
코딩은 알고 써보면 쉬운데 처음 알게되고 처음 사용해 볼 때는 굉장히 어려운 것 같다.
나는 그걸 어렵다고 하지 않고 나에게 낯설고 생경한 지식이다고 생각하기로 했다.
'TIL' 카테고리의 다른 글
[Spring] Session ArrayList 배열 추가하기 (0) | 2021.02.28 |
---|---|
[Spring] PropertyNotFoundException : 타입 [java.lang.Integer]에서 프로퍼티 을(를) 찾을 수 없습니다 - JSTL (0) | 2021.01.13 |
[JavaScript] append에서 onclick 변수 전달 하기 (0) | 2021.01.11 |
[JavaScript] jQuery 셀렉터 value undefined (0) | 2021.01.10 |
[Spring] MyBatisSystemException (0) | 2021.01.09 |