mybatis補足:バッチinsert、バッチupdate、バッチdelete、(foreach実装)およびラベルおよびsqlのcase-switch-then文
4020 ワード
ラベル:whereの条件にnullによるクエリーが失敗すると、削除andまたはorが自動的に変更され、where文を実行しないことも選択されます.同様に、余分なカンマを削除するために使用されます.参照可能ラベル同様:update文でifラベルが使用されていない場合、nullのパラメータがある場合、エラーが発生します.
update文でifラベルを使用する場合、前のifが実行されていない場合、カンマに余分なエラーが発生する可能性があります.setラベルを使用すると、SETキーを動的に構成し、条件の末尾に追加された関連のないカンマを削除できます.if+setラベルを使用して変更すると、nullの場合は更新せず、データベースの元の値を維持します.setラベル要素は主に更新操作で使用され、その主な機能とwhereラベル要素は実際には差が少なく、主に含まれる文の前にsetを出力し、含まれる文がカンマで終わるとカンマは無視され、setパッケージに含まれる内容が空であればエラーが発生します.set要素があれば、変更したフィールドリファレンスを動的に更新できます.
sqlのcase-switch-then文
直接上コード–sqlのswitch case文のような使い方
はっきり言ってcaseは変数であり、whenの後の条件が成立するとthenの後の値に等しい.elseは前のすべての状況を除いて得られる.endを加えてバッチ更新を正常に終了することができる.注意:この方法は、接続データベースurlを構成した後にパラメータ&allowMultiQueries=trueを持参し、バッチ操作を許可しなければならない.例jdbc:mysql://localhost:3306/mysqlTest?characterEncoding=utf-8&allowMultiQueries=true 1:ラベルを使う:update文もインタフェースにネストする:
Mapper.xml
2つ目:case-when-then-end文リファレンスの使用
一括更新:+判断mappperインタフェース
Mapper.xmlファイル
一括削除:Mapperインタフェース
mapper.xmlファイル
foreachとinを併用してselectクエリーを実装
パラメータリストにはエンティティクラスがあり、一括挿入と同じ使い方ができます.item..
update文でifラベルを使用する場合、前のifが実行されていない場合、カンマに余分なエラーが発生する可能性があります.setラベルを使用すると、SETキーを動的に構成し、条件の末尾に追加された関連のないカンマを削除できます.if+setラベルを使用して変更すると、nullの場合は更新せず、データベースの元の値を維持します.setラベル要素は主に更新操作で使用され、その主な機能とwhereラベル要素は実際には差が少なく、主に含まれる文の前にsetを出力し、含まれる文がカンマで終わるとカンマは無視され、setパッケージに含まれる内容が空であればエラーが発生します.set要素があれば、変更したフィールドリファレンスを動的に更新できます.
sqlのcase-switch-then文
直接上コード–sqlのswitch case文のような使い方
select getdate()as ,
case month(getdate())
when 11 then ' '
when 12 then ' '
else substring(' ',month(getdate()),1)
end +' ' as
-- SELECT :CASE
SELECT a.ReturnTkRate_DisCountRate,
'Range' =
CASE
when a.ReturnTkRate_StaHoursInterval>0 then ' '
when a.ReturnTkRate_StaHoursInterval<0 then ' '
else '0'
END
FROM BaseInfo.ReturnTkRate a
はっきり言ってcaseは変数であり、whenの後の条件が成立するとthenの後の値に等しい.elseは前のすべての状況を除いて得られる.endを加えてバッチ更新を正常に終了することができる.注意:この方法は、接続データベースurlを構成した後にパラメータ&allowMultiQueries=trueを持参し、バッチ操作を許可しなければならない.例jdbc:mysql://localhost:3306/mysqlTest?characterEncoding=utf-8&allowMultiQueries=true 1:ラベルを使う:update文もインタフェースにネストする:
/**
*
* @param list
* @return
*/
int updateNewStock(@Param(value = "list") List list);
Mapper.xml
UPDATE green_beans
stock=#{bean.stock}
beanUid = #{bean.beanUid}
2つ目:case-when-then-end文リファレンスの使用
update mydata_table
when id=#{item.id} then #{item.status}
where id in
#{item.id,jdbcType=BIGINT}
一括更新:+判断mappperインタフェース
int addEmpsBatch(@Param("emps") List emps); -->
Mapper.xmlファイル
INSERT INTO emp(ename,gender,email,did)
VALUES
(#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})
一括削除:Mapperインタフェース
/**
*
*
* @param arr
* @return
*/
public boolean doRemoveeMore(int[] arr);
mapper.xmlファイル
delete from emp where empno in
#{arr}
foreachとinを併用してselectクエリーを実装
パラメータリストにはエンティティクラスがあり、一括挿入と同じ使い方ができます.item..
public List dynamicForeachTest(List ids);