목차.

  1. MyBatis 기본 설정
  2. CRUD 예제 만들기
  3. SQL mapper 파라메터 전달

MyBatis는 SQL Mapping XML 구문을 Java 코드로 변환시 디폴트로 PreparedStatement 구문으로 바꾸고 전달되는 파라메터 들을 PreparedStatement 구문의 파라메터 '?'로 대응시킨다.

<select id="user" parameterType="int" resultType="User">
	SELECT * FROM user WHERE id = #{id}
</select>

'#{id}'는 int 타입의 파라메터이며 결과는 User 객체에 저장된다. 이 SQL Mapping XML 구문은 다음과 같은 내용의 Java 구문으로 변환된다.

String user = "SELECT * FROM user WHERE id = ?";
PreparedStatement ps = conn.preparedStatement(user);
ps.setInt(1, id);

빈과 SQL 매퍼간의 파라메터 전달시 MyBatis는 Java 원시타입(Primitive type)의 경우 프로퍼티 getter/setter를 가지지 않고 파라메터 전체가 값을 대신한다.

만일 여러 개의 파라메터를 전달해야 할 경우는 2 가지 방법 중 선택하여 사용할 수 있다. Map을 사용하는 방법과 Mapper Interface Class에 @Param 어노테이션을 사용하는 방법이 있다.

Map을 사용

SQL Mapping XML

<insert id="user" parameterType="map" resultType="User">
	INSERT INTO user (username, password)
	VALUES (#{username}, #{password})
</insert>

Mapper Interface Class

public int addParamMap(Map<string, string> map);

Running Java Code

...
Map<string, string> param = new HashMap<string, string>();
param.put("username", "user1");
param.put("password", "1234");

mapper.addParamMap(param);

@Param 어노테이션을 사용

SQL Mapping XML

<intert id="user">
	INSERT INTO user (username, password)
	VALUES (#{username}, #{password})
</insert>

Mapper Interface Class

public int addParamAnnotation(
		@Param("username") String username,
		@Param("password") String password);

Running Java Code

mapper.addParamAnnotation("user1", "1234");


+ Recent posts