본문 바로가기
MyBatis

바인딩변수를 이용한 SQL문

by Kimjoy 2023. 10. 6.

MyBatis에서는 SQL문의 파라미터 값을 받기 위해 "#{프로퍼티명}"으로 표기한다.

 

#{프로퍼티명}을 이용해 특정행을 검색하는 SELECT문

<select id="구분자" parameterType="파라미터타입" resultType="반환타입">
	select 컬럼명1, 컬럼명2, ... 
    from 테이블명
    where 컬럼명 = #{프로퍼티}
</select>

#{프로퍼티명}을 이용해 한 행을 추가하는 INSERT문

<insert id="구분자" parameterType="파라미터타입">
	insert into 테이블명(컬럼명1, 컬럼명2, ...)
    values (#{값1}, #{값2}, ...)
</insert>

#{프로퍼티명}을 이용해 특정 또는 일부 행의 컬럼 값을 수정하는 UPDATE문

<update id="구분자" parameterType="파라미터타입">
	update 테이블명 
    set 컬럼명1 = #{값1}, 컬럼명2 = #{값2}
    where 컬럼명3 = #{값3}
</update>

#{프로퍼티명}을 이용해 특정행을 삭제하는 DELETE문

<delete id="구분자" parameterType="파라미터타입">
	delete from 테이블명
    where 컬럼명 = #{값1}
</delete>

 

데이터베이스가 자동 생성키를 생성하지 않은 경우

<insert>요소 내에 <selectKey>요소로 키 생성에 필요한 SELECT문을 기술한다. 

<insert id="구분자" parameterType="파라미터타입">
	<selectKey keyProperty="프로퍼티" resultType="자료형" order="BEFORE" statementType="PREPARED">
    	SELECT문(키생성관련)
    </selectKey>
    
    insert into 테이블명(컬럼명1, 컬럼명2 ...)
    values(#{프로퍼티}, #{프로퍼티} ...)
</insert>

=> 테이블에 한 행을 추가할 때 sequence를 이용해서 자동으로 값을 생성하는 경우가 있다. 만약 데이터베이스에 자동생성키가 생성되어있지 않은 경우에 사용할 수 있다. 적용하면 다음과 같다.

<insert id="boardInsert" parameterType="BoardVO">
	<selectKey keyProperty="num" resultType="int" order="BEFORE">
    	SELECT BOARD_SEQ.NEXTVAL FROM DUAL
    </selectKey>
    
    insert into board(num, name, title, content)
    values (#{num}, #{name}, #{title}, #{content})
</insert>

 => 이렇게 작성하면 insert문을 실행하기 전(order가 "BEFORE" 이니까)에 selectKey를 실행하고 결과를 "num"이라는 프로퍼티에 할당한다. 그리고  insert문을 실행해서  #{num}에 "num"을 설정한다.

 

'MyBatis' 카테고리의 다른 글

CDATA Section  (0) 2023.10.07
ResultMap  (0) 2023.10.07
MyBatis 프레임워크  (2) 2023.10.06
mybatis-config.xml 설정파일  (0) 2023.08.07
SQLSession  (1) 2023.08.07