본문 바로가기
스프링

[MyBatis] mapper.xml의 parameterType에 인자 2개 넣기

by 이페코장인 2024. 4. 9.

parameterType

MyBatis에서 SQL문에 들어가는 인자의 데이터 형태를 반드시 명시해 줘야 하며, 이는 parameterType로 설정한다. 숫자면 int, 문자면 String 등 을 명시해야 Spring이 제대로 작동한다. 만약 여러 개의 인자를 넣고 싶다면, 해당 인자들의 집합을 Java 객체 클래스로 따로 선언하여 사용하는 것이 효율적이다. 예를 들어 회원정보를 저장할 때 Member객체를 생성하여 insert문에 보내주면 된다.

	<insert id="insertMember" parameterType="Member" >
		INSERT INTO MEMBER (
		    mNO, ID, PASSWORD, ROLE, NAME, 
		    STATUS, 
		    ENROLL_DATE, MODIFY_DATE
		) VALUES(
		    0, #{id}, #{password}, DEFAULT, #{name}, 
		    DEFAULT,
		    DEFAULT, DEFAULT
		)
	</insert>

 

하지만 사용하고 싶은 인자가 애매하게 단 둘인 경우, 이를 위해 따로 Java 클래스를 생성하는 것이 오히려 비효율적이고 귀찮다. 이 때 parameterType="map"으로 해 주면 간단하게 해결이 가능하다.

 

mapper.java에서 이렇게 파라메터 이름을 정해주면

	FirstView selectFirstView(@Param("mno") int mno,@Param("nno") int nno);

 

mapper.xml에서 mno, nno 두 인자를 받을 수 있다.

	<select id="selectFirstView" resultMap="firstViewResultMap" parameterType="map">
		SELECT * FROM FIRSTVIEW
		WHERE MNO = #{mno} AND NNO = #{nno}
	</select>

 

단, 인자가 두 개인 경우에만 가능한 방식이다.