보뇨 다이어리

마이바티스 프로그래밍 원리와 활용 본문

개인 취미 관련/책을 읽고나서

마이바티스 프로그래밍 원리와 활용

보뇨 2018. 6. 17. 10:56
반응형

현재 프로젝트를 진행하면서 가장 많이 쓰인다는 마이바티스에 대해 전무한 상태에서 사용중이라 어려움이 많았다

기존에 쓰여져있던것을 복붙하던지 인터넷에 짧막하게 설명되어있는것을 가지고쓰다던지....이렇게 이용했는데 최근에 디비 쿼리를 공부하면서 순간 흥미를 느꼈다. 그래서 이 책을 빌려서 읽기시작했는데 매우 잘한선택인것같다. 기본적으로 마이바티스가 무엇인지 어떻게 구동되는지 어떻게 쓸수있는지에 대해 지나치게 자세히 설명되어있다. 자세히 설명되어있는탓에 두꺼운탓도 있지만 막상보면 그렇게 많은 내용을 담고있는것은 아니다. 내가 필요하다고 느낀것을 아래에 기록한다. 지극히 개인적인 생각으로 :)

http://www.mybatis.org/mybatis-3/ko/index.html


  • 캐시를 사용할때 Serializable 인터페이스를 구현해줘야 에러가 나지않는다
    • Serializable 에 대해 정확하게 이해하지못했기때문에 기록
  • select 나 insert 쿼리실행시 반환값을 가져올때는 selectKey 를 이용하여 가져오기
    • 현재 모든 api 쿼리들을 수정해야함
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <insert id="insertShop" parameterType="java.util.HashMap">
        <selectKey keyColumn="SHOP_NO" keyProperty="shopNo" resultType="int"
        order="BEFORE">
        SELECT SEQ_SHOP_NO,NEXTVAL
        FROM DUAL
        </selectKey>
        INSERT INTO SHOP
        (SHOP_NO, SHOP_NAME, SHOP_LOCATION, SHOP_STATUS)
        VALUES
        (#{shopNo}, #{shopName}, #{shopLocation}, #{shopStatus})
    </insert>
    cs

  • 1
    2
    3
    4
    5
    6
    7
    <insert id="insertShop" parameterType="java.util.HashMap"
        useGeneratedKey="true" keyProperty="shopNo">
        INSERT INTO SHOP
        (SHOP_NO, SHOP_NAME, SHOP_LOCATION, SHOP_STATUS)
        VALUES
        (#{shopNo}, #{shopName}, #{shopLocation}, #{shopStatus})
    </insert>
    cs

1
2
3
4
5
6
7
8
9
10
11
12
<select id="select" parameterType="java.util.HashMap"
    resultType="java.util.HashMap">
    SELECT SHOP_NO, SHOP_NAME, SHOP_LOCATION, SHOP_STATUS
    FROM SHOP
    <trim prefix="WHERE" prefixOverrides="AND|OR">
        <if test="    shopNo > 0">
            AND SHOP_NO = #{shopNo}
        </if>
        <if test="shopStatus != null and shopStatus != ''">
            AND SHOP_STATUS = #{shopStatus}
        </if>
    </trim>
cs


참고로 prefixOverrides 가 된다는건 suffixOverrides 를 사용하여 ","> set할때 , 를 삭제할수있음


반응형