째의 개발 기록방

[MyBatis/MariaDB] mapper.xml 문법 본문

Back End/SQL

[MyBatis/MariaDB] mapper.xml 문법

째린이 2021. 6. 9. 15:26

***이 글은 이제 막 개발을 시작한 자린이가 기억하기 위한 일종의 기록으로 정확하지않을 수 있음을 알립니다.***

 

  • insert - 매핑된 INSERT 구문.
  • update - 매핑된 UPDATE 구문.
  • delete - 매핑된 DELEETE 구문.
  • select - 매핑된 SELECT 구문.
   <select id="selectComments" parameterType="CommentsVO" resultType="CommentsVO">
		SELECT
			 CO_NUMBER   AS   coNumber
			,CT_NUMBER   AS   ctNumber
			,CO_NAME     AS   coName
			,CO_CONTENT  AS   coContent
			,CO_DATE     AS   coDate
			,DATE_FORMAT(CO_DATE,'%Y-%m-%d %H:%i:%s') AS coDateStr
		FROM CONTRACT_COMMENTS
		WHERE 1=1	
		AND CT_NUMBER = #{ctNumber}
	</select>

 

SELECT 문

 

여기서 id값이 구문의 이름이 된다.
이름 : selectComments

자료형 타입: CommentsVO

결과 데이터는 여기에 저장된다.

결과 데이터 : CommentsVO

 

<select id="메소드명" resultType="결과값 클래스명" parameterType="파라미터 클래스명">

SELECT * FROM [테이블이름] WHERE [칼럼명] = #{파라미터명} 

</select>

id 값은 dao(mapper)클래스에 사용하는 메소드명을 적어주고, resultType에는 결과로 받는 클래스명 

parameterType은 파라미터 클래스명을 입력해주면 되고, 파리미터를 사용하지 않는경우 생략가능하다.

 

속성 설명
id 구문을 찾기 위해 사용될 수 있는 네임스페이스 내
유일한 구분자
parameterType 구문에 전달될 파라미터의 패키지 경로를 포함한 전체 클래스명이나 별칭
resultType resultType이 구문에 의해 리턴되는 기대타입의 패키지 경로를 포함한 전체 클래스명이나 별칭. collection인 경우 collection 타입 자체가 아닌 collection 이 포함된 타입이 될 수 있다. resultType이나 resultMap을 사용하라.
resultMap 외부 resultMap 의 참조명. 결과맵은 마이바티스의 가장 강력한 기능이다. resultType이나 resultMap을 사용하라.
flushCache 이 값을 true 로 셋팅하면 구문이 호출될때마다 로컬, 2nd 레벨 캐시가 지워질것이다(flush). 디폴트는 false이다.
timeout 예외가 던져지기 전에 데이터베이스의 요청 결과를 기다리는 최대시간을 설정한다. 디폴트는 셋팅하지 않는 것이고 드라이버에 따라 다소 지원되지 않을 수 있다.
fetchSize 지정된 수만큼의 결과를 리턴하도록 하는 드라이버 힌트 형태의 값이다. 디폴트는 셋팅하지 않는 것이고 드라이버에 따라 다소 지원되지 않을 수 있다.
statementType STATEMENT, PREPARED 또는 CALLABLE 중 하나를 선택할 수 있다. 마이바티스에게 Statement, PreparedStatement 또는 CallableStatement를 사용하게 한다. 디폴트는 PREPARED이다.
resultSetType FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE중 하나를 선택할 수 있다. 디폴트는 셋팅하지 않는 것이고 드라이버에 다라 다소 지원되지 않을 수 있다.
databaseId 설정된 databaseIdProvider가 있는 경우 마이바티스는 databaseId 속성이 없는 모든 구문을 로드하거나 일치하는 databaseId와 함께 로드될 것이다. 같은 구문에서 databaseId가 있거나 없는 경우 모두 있다면 뒤에 나온 것이 무시된다.
resultOrdered 이 설정은 내포된 결과를 조회하는 구문에서만 적용이 가능하다. true로 설정하면 내포된 결과를 가져오거나 새로운 주요 결과 레코드를 리턴할때 함께 가져오도록 한다. 이전의 결과 레코드에 대한 참조는 더 이상 발생하지 않는다. 이 설정은 내포된 결과를 처리할때 조금 더 많은 메모리를 채운다. 디폴트값은 false 이다.

 

INSERT 문

<insert id="메소드명" parameterType="파라미터클래스"> 
insert into [테이블명] ([칼럼1], [칼럼2], [칼럼3]) values (#{파라미터1}, #{파마미터2}, #{파라미터3}) 
</insert>

insert절은 위와 같은 문법으로 사용되며 반환하는 결과는 삽입이 실행된 갯수를 반환하므로 결과는 int값으로

항상 반환한다. 따라서 resultType속성은 따로 설정하지 않는다.

 

UPDATE 문

 

<update id="메소드명" parameterType="파라미터 클래스"> 
update [테이블명] set [칼럼1]=#{파라미터1}, [칼럼2]=#{파라미터2}, [칼럼3]=#{파라미터3}  where 조건절 
</update>

update절의 문법은 위와같고 insert절과 마찬가지로 반환하는 결과는 update된 레코드수를 반환하기 때문에

항상 int값을 반환한다. 따라서 resultType을 따로 지정할 필요가 없다.

 

DELETE 문

<delete id="메소드명"> 
 delete from [테이블명] WHERE [조건절]
</delete>

 

like절 검색하기

LIKE CONCAT ('%', #{selectTxt}, '%')

concat은 포함한다는 뜻이며 표기는 이렇게 한다.

selectTxt = 검색값

 

 

출처: https://handam.tistory.com/138 [우리는 오랜만에 편히 앉아서 한담을 나누었다]

출처: https://developer111.tistory.com/10 [코딩공장공장장]