목차

Mybatis(마이바티스) 사용법, 예시

  • description :
  • author : 주레피
  • email : dhan@repia.com
  • lastupdate : 2020-01-31

mapper.xml 예시

SELECT 예시

    <select id="boardList" resultType="BoardDto" useCache="true">
        select * from tbl_board order by pos asc
    </select> 
resultType이 명시되어야 한다.

UPDATE 예시

    <update id="readCount" parameterType="int">
        update tbl_board set count = count + 1 where seq = #{seq}
    </update>
parameterType은 입력 값이다.

DELETE 예시

    <delete id="deleteBoard" parameterType="map">
        delete from tbl_board where seq=#{seq} and password=#{storPass}
    </delete>
parameterType은 입력 값이다.

MYBATIS로 DB 연동

INSERT 예시

    <INSERT id="insertStudents" useGeneratedKeys="true" keyProperty="id" parameterType="Student">
        INSERT INTO Students ( name, email )
        VALUES ( #{name}, #{email} )
    </insert>
selectKey 옵션을 사용하여 오라클에도 적용이 가능하다
    <INSERT id="insertStudents" parameterType="Student">
        <selectKey keyProperty="id" resultType="int" ORDER="BEFORE">
            SELECT SEQ_ID.nexyval FROM DUAL
        </selectKey>
        INSERT INTO Students
        (id, name , email)
        VALUES
        (#{id}, #{name}, #{email})
    </insert>

Mapper XML 파일
mybatis insert/update 쿼리실행후 결과 가져오기

동적 쿼리

myBatis parameterType="String" 일 때 동적쿼리에서 사용

배치(Batch) 입력/수정

[Mybatis/MariaDB] foreach 구문을 이용해서 Insert 대량 삽입하기
[Java / Mybatis] 일괄(Batch) 입력/수정(Insert/Update)

choose

[Mybatis] if else문 대체하는 방법

Null체크 (ibatis와 비교)

Mybatis
  <if test="stringProperty != null">
    조건문
  </if>
ibatis
  <isNotNull property="stringProperty">
     조건문
  </isNotNull>

mybatis와 ibatis별 동적태그 비교문 알아보도록 하자
ibatis to mybatis 전자정부프레임워크
MyBatis 적용 가이드

ResultHandler

[Excel POI] Mybatis ResultHandler 사용하여 대용량 데이터 추출

ResultType & ResultMap

[MyBatis] resultMap 과 resultType (resultClass) 의 차이점

Test

Mybatis if 문자열 비교
마이바티스는 동적 쿼리문 생성에 사용되는 <if /> 구성 요소를 제공...

Tip

<property name=“initialSize” value=“0”/>

  <property name="maxActive" value="8"/>
  <property name="maxIdle" value="8"/>
  <property name="minIdle" value="0"/>
  <property name="maxWait" value="-1"/>
initialSize: 연결 풀이 최초 생성될 때 같이 이 숫자만큼 데이터베이스 연결을 미리 생성합니다. 기본값은 0입니다.
maxActive: 동시에 사용할 수 있는 최대 연결의 갯수 입니다. 음수이면 제한이 없습니다. 기본값은 8 입니다.
이 갯수를 초과하여 요청이 들어오면 최대 maxWait 만큼 대기하고, 그래도 연결을 사용할 수 없을 때는 예외를 발생합니다.
maxIdle: 풀에서 사용되지 않은 상태로 존재할 수 있는 최대 연결의 숫자 입니다. 음수이면 제한이 없습니다. 기본값은 8 입니다.
maxActive가 10 이고, maxIdle이 8일 때 10개의 연결이 모두 사용되고 있는 상태를 가정해 봅니다. 연결이 사용을 마치고 하나씩 반환이 되면
, maxIdle 숫자인 8개가 될때까지는 유휴 상태로 풀에 남겨집니다. 아홉번째 부터는 연결이 해제되어 제거 됩니다. 모두 반환된후에 풀에는 유휴상태인 8개의 연결이 남아 있습니다.
minIdle: 풀에서 사용되지 않은 상태로 존재할 수 있는 최소 연결의 숫자 입니다. 기본 값은 0 입니다. 풀을 관리하는 쓰레드는 풀내의 유휴 연결의 최소 갯수를 이 값으로 유지합니다.
주로 발생하는 상황은 오류가 발생한 연결이나, 사용되지 않고 오래된 연결은 풀에서 제거됩니다. 이 경우 풀내의 연결의 갯수가 minIdle 이하로 떨어지면 새로 생성해서 minIdle 갯수에 맞추게 됩니다.
maxWait - 풀에 사용 가능할 연결이 없을때 대기하는 최대 시간을 밀리초 단위로 나타냅니다. 이 대기시간후에도 사용 가능한 연결이 없으면 예외를 발생합니다. -1은 무한대기를 나타냅니다. 기본값은 -1입니다.

Troubleshooting

DAO에서 보낸 VO가 SQL에서 값이 사라져 버릴 경우

긴장하지 말고 pom.xml에서 mybatis, mybatis-spring 버전 업데이트 하면 해결이 됩니다.

Ref