차근차근/Oracle

oracle | mybatis | insert all | foreach

예쁜꽃이피었으면 2022. 6. 14. 13:51

https://mybatis.org/mybatis-3/dynamic-sql.html

 

mybatis – MyBatis 3 | Dynamic SQL

Dynamic SQL One of the most powerful features of MyBatis has always been its Dynamic SQL capabilities. If you have any experience with JDBC or any similar framework, you understand how painful it is to conditionally concatenate strings of SQL together, mak

mybatis.org

<select id="selectPostIn" resultType="domain.blog.Post">
  SELECT *
  FROM POST P
  <where>
    <foreach item="item" index="index" collection="list"
        open="ID in (" separator="," close=")" nullable="true">
          #{item}
    </foreach>
  </where>
</select>

일단 이게 기본 코드

 

검색해보면 자료는 많은데 내가 적용을 못해서 오전을 다 날렸다

원인1. list로 담아보낼지 map에 담아보낼지 확실치 않아서 이리저리 왔다갔다 함.

원인2. 배열에 담기로 결정한 후 collection="array"로 해야 한다는 걸 뒤늦게 앎.

(어떤 경우에는 array가 아니가 키값을 써야 할때도 있음. )

원인3. 이게 마지막까지 ...붙잡고 있던 이유 였는데 

insert all 하고

into .. 부터 시작해야 한다.................................................................................................

 


1. 나의 데이터는 

String A = "가,나,다,라";

이고 이 값을 콤마로 구분해서 4번 insert할거다. 횟수는 정해지지 않음.

=>

String[] A_arr = subject.split(",");

sqlSession.insert("Mapper.insertA",A_arr);

 

2. 마이바티스에서 <insert 말고 <update사용

=>

<update id="insertA" parameterType="java.util.ArrayList">

   <foreach collection="array" item="item" open="INSERT ALL" separator=" " close="SELECT * FROM DUAL">

      INTO 테이블명 (컬럼1,컬럼2)

      VALUES (#{item},"하하하")

   </foreach>

</update>

 

 

 

https://blog.naver.com/sonmit002/221311028574

 

ajax array 배열 보내기 jsonobject josnarray

보내고자/ 받고자 하는 형태배열 안 객체jsonobject array 보내는 쪽 script배열 안에 객체를 넣어 보냄pom...

blog.naver.com

https://haenny.tistory.com/255

 

[Oracle] MyBatis Insert Foreach 대용량 데이터 처리

[Oracle] MyBatis Insert Foreach 대용량 데이터 처리 oracle mybatis foreach insert [MyBatis] List 파라메터 foreach 사용 (INSERT, DELETE, MERGE, UPDATE) - Oracle [MyBatis] List 파라메터 foreach..

haenny.tistory.com

https://windingroad.tistory.com/51

 

MyBatis foreach문(객체 배열 처리)

[2017-05-19 금요일] * 내용: MyBatis foreach문을 활용한 객체 배열 처리 1. json 객체 배열 생성 2. pojo 형태의 VO 생성 3. ArrayList로 변경 4. MyBatis foreach ※  MyBatis에서 객체 배열로 동적 쿼리를..

windingroad.tistory.com

- 객체의 속성 값을 칼럼으로 사용할 때는 $문자를, 값으로 사용할 때는 #문자를 앞에 붙여 사용한다.

 

https://zorba91.tistory.com/189

 

[Oracle,MySQL] mybatis foreach문을 이용해 다중 insert 하는 법

Mysql과 oracle에서 다중 insert가 어떻게 다른지 비교하면서 설명할 생각이다. 먼저, MySQL에서 foreach로 다중 insert 사용 방법이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 INSERT INTO choco_table (  ..

zorba91.tistory.com

- 구분자는 콤마가 아닌 공백(" ")으로 처리된다. 
foreach 자체 기능을 통해 open에 insert all을 해주고 마지막 select * from dual로 처리해준다.
* 추가내용: oracle을 사용하고 mybatis 사용시, xml문에서 mapper 형식을 insert(<insert id="" >)로 하면 sql command not properly ended 라는 에러가 난다. update(<update id="" ~~~>)로 해주어야 에러가 나지 않는다.

 

https://dejavuhyo.github.io/posts/mybatis-foreach/

 

MyBatis foreach 문법

1. Array 사용

dejavuhyo.github.io

 

https://java119.tistory.com/85

 

[MyBatis] 동적 쿼리 foreach문 문법 총 정리

시작하기에 앞서 참고 자료 *ibatis iterate문 지원 태그 property : 파라미터명 prepend : 쿼리로 쓰일 문자 open : 구문이 시작될때 삽입할 문자열 close : 구문이 종료될때 삽입할 문자열 conjunction :..

java119.tistory.com

https://mchch.tistory.com/86

 

[MyBatis] 배열 파라미터 / list 사용하는 쿼리 / 반복문 쿼리

boardType 변수는 String[] 타입 String[] 타입을 map에 넣었다. String[] boardType; //checkbox 선택지 가져올 배열 생성 boardType=request.getParameterValues("boardType"); //checkbox 선택지 가져오기 map...

mchch.tistory.com

https://mingggu.tistory.com/71

 

MyBatis 반복문(foreach) + String[] 배열(array) / iBatis 반복문(iterate) + 동적 쿼리(dynamic)

myBatis 와 iBatis 의 반복문은 크게 다르진 않다. ** open="("     : 반복시 '('로 시작 ​close=")"    : 반복시 ')'로 끝남 prepend      : 'WHERE' 과 같이 iterate 문 앞에 첨가 *** myBatis 1 2..

mingggu.tistory.com

https://wook-dragon.tistory.com/8

 

[MyBatis] 동적쿼리 foreach문

예를들어, DB에 insert를 10개 한다하면 나는 serviceimpl에서 for문을 10번 돌려가면서 insert를 했었다. 그러다보니 코드도 지저분해지는 것이 보이고 하여 MyBatis foreach를 접하게되었다. MyBatis foreach문..

wook-dragon.tistory.com

 

반응형