- SQL Map XML 파일 :: SQL을 작성하는데 집중하도록 만들어졌다.
resultMap - 데이터베이스 결과데이터를 객체에 로드하는 방법을 정의하는 요소
- <select></select>
select태그의 속성들
id=”selectPerson”
parameterType=”int”
parameterMap=”deprecated”
resultType=”hashmap”
resultMap=”personResultMap”
flushCache=”false”
useCache=”true”
timeout=”10000”
fetchSize=”256”
statementType=”PREPARED”
resultSetType=”FORWARD_ONLY”
이 중에 밑에 세가지가 주로쓰인다 기억 !
resultType="hashmap"
parameterType="int"
resultMap = "personResultMap"
parameterMap – 비권장됨! 예전에 파라미터를 매핑하기 위해 사용되었으나 현재는 사용하지 않음
parameterType으로 받아올 데이터가 여러개라면 DTO나 Map,
한개라면 기본형타입.
- insert에서만 사용가능한 keyProperty
1 2 3 4 5 6 7 8 9 10 11 12 | <insert id="insertAuthor" parameterType="domain.blog.Author"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1 </selectKey> insert into Author (id, username, password, email,bio, favourite_section) values (#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR} ) </insert> | cs |
id값에만 랜덤 값을 넣어주고싶다면 먼저 selectKey로 값을 가져와 그 값을 #{id}로 넣을 수 있다.
<selectKey>의 속성에 order="before"를 걸면 sql문을 실행하기 전에 먼저 실행하겠다는 의미가 된다.
- mybatis에서의 sql문에 null 허용법
mybatis 안의 태그내에서 sql문에 들어오는 #{ } 값이 누락되면 null허용이 안되는것이 디폴트값으로 되어있다.
#{ } 값이 없이 실행을 하면 DB로 입력할수 없다고 에러 처리가 되버린다.
그러나 데이터베이스에서는 null값이 들어가는 상황(NULLABLE)도 있기때문에
NULL 처리를 하고싶다면 mybatis내에서 따로 '명시' 해 주어야한다.
우리가 데이터베이스에 입력이안되는부분은 null값으로 입력해주고싶다면
#{프로퍼티명, jdbcType =VARCHAR} => null값 허용
#{프로퍼티명, jdbcType =NUMBER} => null값 허용
이런식으로 명시해주어야한다.
1. 주의사항1 :: jdbcType에 오는 값은 반드시 대문자로 입력해주어야한다.
2. 주의사항2 :: VARCHAR2는 존재하지않는다. (VARCHAR2 타입의 컬럼이면 그냥 VARCHAR로 사용한다)
'JAVA > MyBatis' 카테고리의 다른 글
mybatis - 동적SQL(if / choose / where / set / foreach) (0) | 2018.09.04 |
---|---|
mybatis 개념/순서 (0) | 2018.09.04 |