머리말
Mybatis는 웹 엔지니어링 개발에서 매우 일반적으로 사용되는 데이터 지속성 프레임 워크입니다. 이 프레임 워크를 통해 데이터베이스를 쉽게 추가, 삭제, 수정 및 검색 할 수 있습니다. 데이터베이스 연결이 트랜잭션을 저지르면 많은 리소스가 소비됩니다. 더 많은 업데이트 된 데이터를 삽입해야하고 각 트랜잭션에 대해 하나의 데이터 만 제출되면 데이터베이스 리소스가 막대한 낭비하여 데이터베이스 성능 및 시스템 성능이 크게 감소합니다.
MyBatis의 배치 삽입과 관련하여 인터넷의 대부분의 예제는 MySQL 데이터베이스에 관한 것이며 Oracle 데이터베이스에 대한 예제가 더 적습니다. 이 기사에서는 Oracle+Mybatis 배치 삽입, 업데이트 및 삭제에 대한 관련 컨텐츠를 소개합니다. 아래에서 많이 말하지 않겠습니다. 자세한 소개를 함께 살펴 보겠습니다.
1. 삽입
(1) 첫 번째 방법 : <foreach> 태그를 사용하여 Union을 통해 가상 데이터를 생성하여 배치 삽입을 달성합니다 (확인)
<insert id = "insertbatchlatcontactrecord"parametertype = "java.util.map"> <selectkey resulttype = "java.lang.long"keyproperty = "dto.id"order = "precte"> sec_la_t_contact_record.nextval </selectkey> select in insint inc la_t_contact_record (id, contract_id, contact_add_name, contact_add_type, contact_add_phone, contact_add_home_address, contact_add_work, contact_add_work_address, create_by, create_time, modify_by, modify_time, sys_source, sys_source, issquery) seq_la_t_contact_record.nextval, a.* from (<foreach collection = "list"item = "dto"index = "index"separator = "Union all"> select #{dto.contractid, jdbctype = varchar}, #{dto.contacteraddname, jdbctype = varchar} ,#{dto.contactAddtype, jdbctype = varchar},#{dto.contactaddphone, jdbctype = varchar},#{dto.contactaddhomeaddress, jdbctype = varchar},#{dto.contactAddwork, jdbctype = varctype. ,#{dto.contactAddwork, jdbctype = varchar},#{dto.contactAddworkAddress, jdbctype = varchar},#{dto.createby, jdbctype = decimal}, systimestamp,#{dto.modifyby, jdbctype = decime} ,#{dto.modifytime, jdbctype = timestamp}, '1',#{dto.syssource, jdbctype = varchar},#{dto.isquery, jdbctype = varchar} a </insert>참고 : 항목 매개 변수는 목록 수집이어야하며 SQL 문에는 값이 없습니다.
(2) 두 번째 방법 : 저장된 절차를 사용하여 배치 삽입을 실현 (확인)
<insert id = "INSERTPLANREPAYMENTOTHFEEBATCH"PARAMETERTYPE = "java.util.list"> 시작 <foreach collection = "list"item = "item"index = "index"> lb_t_plan_erpayment_otherfee에 삽입 값 (seq_lb_t_plan_repay_otherfee.nextval,#{item.key, jdbctype = varchar},#{item.value, jdbctype = varchar},#{item.perm, jdbctype = decimal}, {item.contract, jdbctype = vartracte, jdbctype. ,#{item.payorder, jdbctype = decimal},#{item.feename, jdbctype = varchar},#{item.intoid, jdbctype = varchar}); </foreach> 끝; </삽입>참고 : 들어오는 매개 변수는 여전히 목록 컬렉션이며 SQL에는 값이 있습니다.이 값은 본질적으로 저장된 절차를 사용하여 배치 삽입을 구현합니다.
(3) 세 번째 방법 : 특수 SQL 문을 사용합니다 (온라인 검색, 확인 대기)
참조 블로그 : http://blog.csdn.net/w_y_t_/article/details/51416201
다음 SQL 문은 문의 배치 삽입을 구현할 수 있습니다!
userInfo ( '1001', 'tom') userInfo (userInfo ( '1002', 'black') values (userInfo (userId, username) 값 ( '1003', 'jetty') values ( '1003', 'jetty')에 userInfo ( '1002', 'black') values ( '1002', 'black') values ( '1002', 'black') values ( '1002', 'black') values (userInfo ( '1002', 'black')에 userInfo ( '1002', 'black') values ( '1004', 'cat')에 userinfo ( '1001', 'tom') 값을 모두 삽입하십시오.
<insert id = "batchinsertuser"parametertype = "java.util.arraylist"> all <foreach collection = "list"item = "userList"index "> in UserInfo (userId, username) value (#{userList.UserId},#{userList.username} <</foreach> 1/dulec>참고 : 목록의 크기가 500보다 크면 실패합니다.
2. 업데이트
(1) 첫 번째 방법 : 저장 절차를 사용하십시오 (온라인 검색, 위의 블로그)
<업데이트 id = "BatchUpDateUser"ParameterType = "java.util.arraylist"> <foreach collection = "list"item = "userlist"index "index"alpe = "begin"close = "; end;" 분리기 = ";"; "> UserInfo t <set> t.userid = #{userList.UserId, jdbctype = varchar}, t.username = #{userList.username, jdbctype = varchar}, </set> where t.userid = #userlist.userid, jdbctype>. </업데이트>(2) 두 번째 방법 : 조건을 사용하여 달성 (확인)
<update id = "updatebatchByListStat"ParameterType = "java.util.map"> update la_t_advfinished t1 set t1.list_stat = '07 ', t1.modify_time = systimestamp where t1.id in (<foreach collection = "ids"ids ")
참고 : 아래 삭제 된 SQL과 유사한 OR 조건부 구현을 사용할 수도 있습니다.
3. 삭제
두 번째 업데이트와 유사합니다
<delete id = "deleteattractions"parametertype = "java.util.list"> 명소에서 삭제 <were> <foreach collection = "list"index = "index"item = "item"olope = "("seplicator = "또는"close = ")" ""> id =#{item.id} </helete>요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.