====== Mybatis(마이바티스) 사용법, 예시 ====== * description : * author : 주레피 * email : dhan@repia.com * lastupdate : 2020-01-31 ===== mapper.xml 예시 ===== SELECT 예시 > resultType이 명시되어야 한다. UPDATE 예시 update tbl_board set count = count + 1 where seq = #{seq} > parameterType은 입력 값이다. DELETE 예시 delete from tbl_board where seq=#{seq} and password=#{storPass} > parameterType은 입력 값이다. [[https://hunit.tistory.com/200|MYBATIS로 DB 연동]] INSERT 예시 insert into Students ( name, email ) values ( #{name}, #{email} ) > selectKey 옵션을 사용하여 오라클에도 적용이 가능하다 select SEQ_ID.nexyval FROM DUAL insert into Students (id, name , email) values (#{id}, #{name}, #{email}) [[http://www.mybatis.org/mybatis-3/ko/sqlmap-xml.html|Mapper XML 파일]] \\ [[https://taetaetae.github.io/2017/04/04/mybatis-useGeneratedKeys/|mybatis insert/update 쿼리실행후 결과 가져오기]] \\ ===== 동적 쿼리 ===== [[http://blog.naver.com/roropoly1/221184569655|myBatis parameterType="String" 일 때 동적쿼리에서 사용]] ===== 배치(Batch) 입력/수정 ===== [[https://vivi-world.tistory.com/13|[Mybatis/MariaDB] foreach 구문을 이용해서 Insert 대량 삽입하기]] \\ [[https://baejangho.com/entry/Java-Mybatis-Batch-Insert|[Java / Mybatis] 일괄(Batch) 입력/수정(Insert/Update)]] \\ ===== choose ===== [[https://kmhan.tistory.com/43|[Mybatis] if else문 대체하는 방법]] \\ ===== Null체크 (ibatis와 비교) ===== >Mybatis 조건문 >ibatis 조건문 [[https://hellogk.tistory.com/100|mybatis와 ibatis별 동적태그 비교문 알아보도록 하자]] \\ [[https://web-obj.tistory.com/246|ibatis to mybatis 전자정부프레임워크]] \\ [[https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:psl:dataaccess:mybatisguide|MyBatis 적용 가이드]] \\ ===== ResultHandler ===== [[https://kongeebol.tistory.com/2|[Excel POI] Mybatis ResultHandler 사용하여 대용량 데이터 추출]] \\ ===== ResultType & ResultMap ===== [[https://dorongdogfoot.tistory.com/124|[MyBatis] resultMap 과 resultType (resultClass) 의 차이점]] \\ ===== Test ===== [[https://sinpk.tistory.com/entry/Mybatis-if-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B9%84%EA%B5%90|Mybatis if 문자열 비교]] \\ [[https://madnix.tistory.com/entry/%EB%A7%88%EC%9D%B4%EB%B0%94%ED%8B%B0%EC%8A%A4%EB%8A%94-%EB%8F%99%EC%A0%81-%EC%BF%BC%EB%A6%AC%EB%AC%B8-%EC%83%9D%EC%84%B1%EC%97%90-%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94-if-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C%EB%A5%BC-%EC%A0%9C%EA%B3%B5|마이바티스는 동적 쿼리문 생성에 사용되는 구성 요소를 제공...]] ===== Tip ===== * DBCP 기본값 > 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 ===== * [[https://offbyone.tistory.com/161|전자정부 표준프레임워크 - dataSource (DBCP) 설정하기]] * [[http://blog.naver.com/roropoly1/221184569655|myBatis parameterType="String" 일 때 동적쿼리에서 사용]] * [[https://jsonobject.tistory.com/240|MyBatis, Dynamic SQL 기본식 알아보기]] {{tag>주레피 eleven mybatis}}