Предисловие
Mybatis - это очень часто используемая структура постоянства данных в разработке веб -инженерии. Через эту структуру мы можем легко добавить, удалять, изменять и искать в базе данных. Когда подключение к базе данных совершает транзакции, оно потребляет много ресурсов. Если необходимо вставить более обновленные данные, и для каждой транзакции представлены только один данные, это приведет к огромной трате ресурсов базы данных, что приведет к значительному снижению производительности базы данных и производительности системы.
Что касается пакетной вставки Mybatis, то большинство примеров в Интернете посвящены базам данных MySQL, и есть меньше примеров о базах данных Oracle. Эта статья представит вам соответствующий контент о вставке, обновлении и удалении Oracle+Mybatis. Я не скажу многое ниже, давайте посмотрим на подробное введение вместе.
1. Вставьте
(1) Первый метод: используйте тег <Foreach> для генерации виртуальных данных через Union All для достижения пакетной вставки (проверка)
<INSERT ID = "INSERTBATCHLATCONTACTRECORD" PARAMETERTYPE = "java.Util.map"> <selectKey resultyPe = "java.lang.long" keyProperty = "dto.id" (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, validate_state, sys_source, isquery) select SEQ_LA_T_CONTACT_RECORD.NEXTVAL, a.* from (<foreach collection = "list" item = "dto" index = "index" sepreator = "union"> select #{dto.contractid, jdbctype = varchar}, #{dto.contacteradname, jdbctype = varchar. ,#{dto.contactAdType, jdbctype = varchar},#{dto.contactaddphone, jdbctype = varchar},#{dto.contactaddhomeaddress, jdbctype = varchar},#{dto.contactaddress, jdbctepe = varchar},#{dto.contactaddwork, jdbctepe =#{dto.contactaddwork, jdbcte ,#{dto.contactaddwork, jdbctype = varchar},#{dto.contactaddworkaddress, jdbctype = varchar},#{dto.createby, jdbctype = decimal}, systimestam ,#{dto.modifytime, jdbctype = timestamp}, '1',#{dto.syssource, jdbctype = varchar},#{dto.isquery, jdbctype = varchar} из двойного </foreach>) </insert>ПРИМЕЧАНИЕ. Параметр записи должен быть сбором списков, и в операторе SQL нет значений;
(2) Второй метод: используйте сохраненные процедуры для реализации пакетной вставки (проверка)
<INSERT ID = "INSERTPLANREPaymentOtherfeeBatch" parameterType = "java.Util.list"> begin <foreach collection = "list" item = "item" index = "index"> in in to lb_t_plan_repayment_otherfee (id, ключ, значение, термин, контракт_д, pay_dor значения (seq_lb_t_plan_repay_otherfee.nextval,#{item.key, jdbctype = varchar},#{item.value, jdbctype = varchar},#{item.term, jdbctepe = decimal},#{item.contractid, jdbcte = decimal}, xem.contractid, jdbct ,#{item.payorder, jdbctype = decimal},#{item.feename, jdbctype = varchar},#{item.intoid, jdbctype = varchar}); </foreach> end; </insert>ПРИМЕЧАНИЕ. Входящие параметры по -прежнему являются коллекциями списков, и в SQL есть значения, которые по существу используют хранимые процедуры для реализации пакетной вставки;
(3) Третий метод: используйте специальные операторы SQL (поиск в Интернете, ожидая проверки)
Справочный блог: http://blog.csdn.net/w_y_t_/article/details/51416201
Следующий оператор SQL может реализовать пакетную вставку заявления!
Вставьте все в значения пользователя userinfo (userid, username) ('1001', 'tom') в значения userinfo (userid, username) ('1002', 'black') в значения userinfo (userid, username) ('1003', 'jetty') в значения userinfo (userid, userame) ('1004', 'cat') select 1 от dual; <INSERT ID = "BatchInsertUser" parameterType = "java.util.arraylist"> Вставьте все <foreach collection = "list" item = "userlist" index = "index"> in userinfo (userid, username) значения (#{userlist.userid},#{userlist.usermanme}) </foreece> select 1 от dual> select 1 от dual> select 1 от dual> select 1 от dual </rate> select 1 от dual </rate> select 1 от dual </rate> select 1.Примечание. Когда размер списка превышает 500, он потерпит неудачу;
2. Обновление
(1) Первый метод: также используйте сохраненные процедуры (поиск в Интернете, блог выше)
<Обновление идентификатор = "batchupDateUser" parameterType = "java.util.arraylist"> <foreach collection = "list" item = "userlist" index = "index" open = "begin" close = "; end;" sepreator = ";"> обновить userinfo t <set> t.userid = #{userlist.userid, jdbctype = varchar}, t.username = #{userlist.usernam(2) Второй метод: используйте условия для достижения (проверка)
<Update id = "updatebatchbyliststat" parametertype = "java.util.map"> Обновление LA_T_ADVFINIEND T1 SET T1.List_stat = '07 ', T1.Modify_Time = SystimeStamp, где t1.id in (<foreach collection = udats ",", "," ID, "ID">' $ {id} '</id'/id '</idteach>)Примечание. Вы также можете использовать или условную реализацию, аналогичную SQL, удаленной ниже;
3. Удалить
Подобно второму обновлению
<delete id = "deleteatTractions" parameterType = "java.util.list"> delete from Attractions <where> <foreach collection = "list" index = "index" item = "item" open = "(" sepreator = "или" close = ")"> id =#{item.id} </foreach> </where> </delete>Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.