本文在springboot整合mybaits的情境下,實現高效批量更新。
第一種:
首先能夠想到的是
<
update id=
"updmsg"
>
"list" item=
"item" separator=
";">
update user_info_ref_project set name=
#,num=# where id=#
<
/foreach>
<
/update
>
等同於:
update user_info_ref_project set name=
"1"...
where id =..
.update user_info_ref_project set name=
"2"...
where id =..
.update user_info_ref_project set name=
"3"...
where id =..
.update user_info_ref_project set name=
"4"...
where id =..
.update user_info_ref_project set name=
"5"...
where id =..
.
但是這種方法的效率非常低,而且非常消耗資料庫資源,基本相當於在**裡面實現迴圈更新,不可取。
第二種:
利用case when,實質上就是sql的拼接字串。
<
update id=
"listupdossfile" parametertype=
"com.oss.model.sizekeymodel"
>
update
$_file_record_msg
<
--無論有多少個字段都只有乙個set標籤,本人在寫的時候,這個地方就出過錯誤,搞了好久才找到原因-->
"set" suffixoverrides=
",">
"file_size =case" suffix=
"end,"
>
"filemsglist" item=
"item"
index
="index"
>
when
oss_key=
# and member_id=#
then
#<
/foreach>
<
/trim>
<
--一般有多少個需要動態更新的字段就用幾個這樣的trim標籤-->
"enable =case" suffix=
"end,"
>
"filemsglist" item=
"item"
index
="index"
>
when
oss_key=
# and member_id=#
then
#<
/foreach>
<
/trim>
<
/trim>
where
member_id =
# and
oss_key in
"filemsglist"
index
="index" item=
"item" separator=
","open
="("
close
=")"
>
#<
/foreach>
<
/update
>
如果第一種方案算是五條sql,那麼第二種就只是算一條sql,其在mysql中的展示形式為:
update
$_file_record_msg
set
file_size =
(case
when oss_key=
# then #),
enable=(
case
when oss_key=
# then #),
file_size =
(case
when oss_key=
# then #),
enable=(
case
when oss_key=
# then #),
file_size =
(case
when oss_key=
# then #),
enable=(
case
when oss_key=
# then #),..
....
where oss_key in
(#,#,#,...)
第二種方案是目前實現批量多欄位更新比較好的一種方式,極大的節約了資源。 MyBatis批量刪除功能實現
首先定義全選框的的id屬性id summarybox 然後定義乙個資料單選框的class屬性class itembox 說明 adminid屬性是html標籤本身並沒有的屬性,是我們強行設定的。整個表單檔案 賬號名稱 郵箱位址 操作 抱歉,沒有使用者查詢的資料!全選 全不選功能 summarybox...
mybatis大批量資料批量更新高效率解決辦法
mybatis批量更新有兩種方式 1 第一種就是普通的迴圈每條資料進行更新,這種方式最大的問題就是效率問題,逐條更新,每次都會連線資料庫,然後更新,再釋放連線資源 雖然通過連線池可以將頻繁連線資料的效率大大提高,抗不住資料量大 這中損耗在資料量較大的時候便會體現出效率問題。這也是在滿足業務需求的時候...
mybatis 如何批量運算元據庫
1 通過foreach 在sql裡面批量運算元據 示例如下 insert into t user user name,real name,mobile,email,note,position id values 2 mybatis 批量 提交資料庫 mybatis的執行器有三種型別 這個型別不做特殊...