출처: http://november11tech.tistory.com/88 [Mr.november11] '개발/Mybatis' 카테고리의 글 목록 :: 사월은 봄이다.

ul.udr_id in 


<foreach item="item" index="index" collection="udrIds" open="(" separator="," close=")">


        #{item}


    </foreach>




collection : 전달 받은 인자 값


collection은 객체로 List나 배열을 전달 받을 수 있다.






<foreach collection="list" item="item" index="index" separator="," open="(" close=")">


    #{item.value}


</foreach>




이렇게도 사용 가능함

Mibatis에서 trim 을 사용 할 수 있음




예)


<insert id="insertEvent">


insert into 테이블


<trim prefix="(" suffix=")" suffixOverrides="," >


<if test="userId!= null" >


user_id


</if>


</trim>


  <trim prefix="values (" suffix=")" suffixOverrides="," >


<if test="userId!= null" >


#{userId,jdbcType=VARCHAR}


</if>


</trim>


</insert>




prefix는 처리 후 element의 내용이 있으면 가장 앞에 붙여준다.




preOverrides 는 처리 후 element 내용 중 가장 앞에 해당 문자들이 있다면 자동으로 지워준다.




suffix는 처리 후 element 내에 내용이 있으면 가장 뒤에 붙여준다.




suffixOverrides 는 처리 후 element 내용 중 가장 뒤에 해당 문자들이 있다면 자동으로 지워준다.

<insert id="saveCertification" parameterType="com.my.model.CertModel"  useGeneratedKeys="true"  keyProperty="id"  keyColumn="id">


  INSERT INTO AAA


  ( USER_ID , AAA_ID , SIGN_DATE_TIME ) 


  VALUES(


   #{userId,jdbcType=VARCHAR},#{aaaId,jdbcType=DECIMAL},#{signDateTime,jdbcType=DECIMAL}


  )


  


  <selectKey keyProperty="certificationId" resultType="Long" order="AFTER">


        SELECT SEQ_AAA_CERTIFICATION.currval FROM dual


      </selectKey>


 </insert>








-> 이렇게 되면 CertModel 에 certificationId에 값이 자동으로 저장되어 리턴됨.






위의 것은 Oracle




아래 것은 MySql 또는 MariaDB


<insert id="insertEvent" parameterType="com.fi.my.model.MyEldEventVO" useGeneratedKeys="true" keyProperty="mySeq" keyColumn="my_seq">


~~~~


<selectKey resultType="Integer" order="AFTER" keyProperty="mySeq">


        SELECT LAST_INSERT_ID() as mySeq


    </selectKey>


  </insert>


<insert id="saveChartOpt" parameterType="com.tm.chart.ChartOptVO"  useGeneratedKeys="true" keyProperty="chart_option_seq" keyColumn="chart_option_seq">


  INSERT INTO t_chart_option


 (


  option_name


    ,xdata


    ,ydata


 )


 VALUES


 (


  #{optionName}


  ,#{xData}


  ,#{yData}


 )


 <selectKey keyProperty="chart_option_seq" resultType="long" order="AFTER">


            SELECT currval('chart_option_seq')


        </selectKey>


 


</insert>


 


 


........


 


하아...어렵네


 


return 하는 시퀀스 값을 parameter 로 들어온 VO 로 반환 한다.


 


하하하하하


 


젠장-

Mybatis 를 쓰다보면 가끔 아래와 같은 에러가 나오는데,

이뜻은...

java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.fi.lambda.Mapper.MissingDataMapper.latestHexSeq 


결국 같은 id 값을 가지는 쿼리가 한 mapper.xml에 있다는 소리다.

체크해봐야 함


'개발 > Mybatis' 카테고리의 다른 글

mybatis에서 foreach  (0) 2018.02.11
Mibatis trim 동적SLQ  (0) 2018.02.11
Mybatis] insert 후 key 값 가져오기  (0) 2018.02.11
ibatis에 insert 후 시퀀스 값 리턴 받기  (0) 2018.02.11

+ Recent posts