티스토리 뷰

xml형식의 파일을 만들어 원하는 SQL문을 작성할때 중요한것

-namespace: Mapper의 전체경로를 적는다.

 

-id: 매퍼 인터페이스의 메소드명과 XML파일의 id명

 

-resultType: SQL문을 실행하고 결과값을 어떤형식으로 반환할지 나타낸다. 

 

 

 

Mapper XML File 정의, 기능 

 

MyBatis Mapper XML(SQL Mapping File)  실행할 SQL문을 정의해놓은 파일이다. 

 

1. SQL문 실행을 위해, Parameter Object를 받아오기

2. SQL문 실행결과를, Result Object에 자동 바인딩하는 기능

 

 

 

Mapper XML File 요소 

 

  • <select>:매핑된 select 구문
  • <insert>: 매핑된 insert구문
  • <update>: 매핑된 update 구문
  • <delete>:매핑된 delete구문
  • <sql>:다른 구문에서 재사용하기 위한 SQL 조각
  • <resultMap>: 데이터베이스 결과 데이터를 객체에 매핑하는 방법을 정의 
  • <cache>: 자신의 namespace를 위한 캐시설정
  • <cache-ref>: 다른 namespace의 캐시 설정을 참조

 

Mybatis 개념

 

Mybatis는 JDBC 로 처리하는 상당부분의 코드, 피라미터 설정, 결과매핑을 대신해준다. 

  • 데이터베이스 레코드의 원시타입
  • Map 인터페이스
  • 자바 POJO

위 3가지를 매핑하기위하여, XML과 애노테이션을 사용한다. 

 

 

CDATA 구문 

 

마이바티스에서는 cdate구문을 많이 사용한다. 

 

CDATA는 태그안에서 전부 문자열로 치환시켜버린다. 

 

 

<select id="findAll" resultMap="MemberResultMap">
	<![CDATA[
    		select *
            from student
            where no=1
       ]]>
</select>

 

하지만 중간에 조건문태그를 감싸면 태그가, 인식을 못하기 때문에 

 

<select id ="student" resultMap="MemberResultMap">
	<![CDATA[
    	select *
        from employees
        where 1=1
      ]]>
      <choose>
      	<when test = 'user_type!=null and user_type=="1"'>
        	<![CDATA[
            	salary>100
             ]]>
         </when>
       <otherwise>
       		<![CDATA[
            	salary<100
              ]]>
         </otherwise>
      </choose>
 </select>

 

 

 

isNotEmpty태그 사용법 

 

isNotEmpty는 property의 값이 비어있지 않을때, 즉 값이 있을때만 실행하는 동적쿼리 

 

<isNotEmpty prepend ="AND" property ="BAS_YM">
	BAS_YM=#BAS_YM#
</isNotEmpty>
  • prepared: 있을때 조건 앞에 붙는 논리 키워드(AND, OR)등
  • property: 있는지 없는지를 판단할 프로퍼티 이름 

 

 

isNotEqual 태그 사용법

 

isNotEqual는 property에 지정된 변수값과 compareValue의 값을 비교하여 같지 않을때 실행하는 동적 쿼리이다. 

 

<isNotEqual property="userno" compareValue="studentno">
	AND com=#com#
</isNotEqual>

 

  • prepend: 태그 안의 값에 추가로 붙여주는 접두어(prefix)이다.  ->where, AND, OR
  • property:비교할 변수명
  • compareValue:비교할 값 

 

isEmpty 태그 사용법

 

isEmpty는 들어오는 속성의 값이 null, ""인지를 판별하는 태그이다. 

속성의 값이 null, ""이면 실행해준다. 

 

<isEmpty prepend="AND" property="userid">
	NAME=#name#
</isEmpty>

 

 

 

 

MyBatis, #{}

 

피라메터가 String형태로 들어와 자동으로 '피라메터'형태가 된다. 

 

쿼리 주입을 예방할 수 있어서 보안측면에서 유리하다!

 

<select id="studentinfo" parameter ="java.lang.String" returnData = "String">
	<![CDATA[ SELECT userid
    			from userinfo
                where userid=#{userld}
 </select>

where userid="name"으로 실행된다. 

 

MyBatis, ${}

 

 

피라메터가 바로 출력된다. 해당컬럼의 자료형에 맞추어서, 피라메터의 자료형이 변경된다.

 

그렇기에 쿼리 주입을 예방할 수가 없어서, 보안측면에서 불리하다. 

 

하지만 테이블, 컬럼명, 예약어를 피라메터로 전달할때 사용한다. 

(#는 자동으로""가 붙어서 문자열이 되기에 사용할 수 없다. )

 

 

<select id="studentinfo" parameter ="java.lang.String" returnData = "String">
	<![CDATA[ SELECT userid
    			from userinfo
                order by userid ${sortOrder}
 </select>

 

${sortOrder}는 자동으로 order by userid DESC가 실행된다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함