본문 바로가기

SPRING

@Param 어노테이션 언제 쓰는지?

Mybatis의 SQL 문장에 다수의 파라미터를 전달할 때는 전달되는 변수들에 꼭 @Param 어노테이션을 붙여줘야한다.

 

 

다음과 같이 email, password 두 가지를 전달해야할 경우,

 

<delete id="deleteMember">
	delete
	from tbl_member 
	where email = #{email} and password = #{password}
</delete>	

 

아래와 같이 mapper 인터페이스에서 전달하고자 하는 변수명 앞에 @Param 어노테이션을 추가해야한다.

 

public void deleteMember(@Param("email") String email, @Param("password") String password);

 

 

** 만약 전달하고자 하는 것이 커맨드 객체일 경우 다음과 같이 사용한다.

 

public List<BoardVO> getListPagingBoard(@Param("cri") Criteria cri, @Param("addressnum") int addressnum);

public int getTotalCount(@Param("cri") Criteria cri, @Param("addressnum") int addressnum);

 

아래와 같이 두 가지 사항을 확인한다.

1. <select parameterType="map">으로 받아주기

2. Criteria cri의 변수에는 cri.pageNum / cri.amount 와 같이 작성

 

<select id="getListPagingBoard" parameterType="map" resultMap="board">
		<![CDATA[
		select boardnum, title, price, sell, readcnt, regdate, nickname, membernum
		from(
			select rownum rn, boardnum, title, price, sell, readcnt, regdate, nickname, membernum
			from(
				select rownum rn, a.boardnum, a.title, a.price, a.sell, a.readcnt, a.regdate, b.nickname, b.membernum
				from tbl_board a join tbl_member b
				on a.membernum = b.membernum
				where b.addressnum = #{addressnum}
				order by sell desc, boardnum desc)
			where rownum <= #{cri.pageNum} * #{cri.amount})
		where rn > (#{cri.pageNum} - 1) * #{cri.amount}
		]]>
</select>
	
<select id="getTotalCount" parameterType="map" resultType="int">
		SELECT count(*)	
		from(
			select a.boardnum, a.title, a.price, a.sell, a.readcnt, a.regdate, b.nickname, b.membernum
			from tbl_board a join tbl_member b
			on a.membernum = b.membernum
			where b.addressnum = #{addressnum})
</select>

'SPRING' 카테고리의 다른 글

Tomcat War 파일로 배포하기  (0) 2020.11.21
REST API란?  (0) 2020.11.04
스프링 <form> 태그 사용법  (0) 2020.10.16
mybatis 환경설정 : <typeAliases>  (0) 2020.10.15
스프링 유효성 검증 : @Valid 어노테이션  (0) 2020.10.15