myBatis で条件を削除する際のスプライシング問題を解決する

myBatis で条件を削除する際のスプライシング問題を解決する

私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行しました。削除操作を行う際、単一レコードを削除する場合は非常に簡単ですが、一括削除する場合は削除条件をつなぎ合わせるのは少し面倒です。以下にその方法を記録しておきます。

SQL 文では、削除条件が一意でない場合、2 種類の削除 SQL 文があります。1 つは、delete from table name where condition 1 or condition 2 のように where で条件を連結して使用するもので、もう 1 つは、delete from table name where element in () のように in で使用するものです。

最初の削除ステートメントを使用して、mybatis の mapping.xml をスプライスします。

2 番目の削除ステートメントを使用して、mybatis の mapping.xml に挿入します。

上記の削除操作は基本的に完了です。ただし、欠陥があります。クエリ条件 idList に要素がない場合、テーブル ac01 全体のレコードが削除されます。したがって、上記の方法を改善する必要があります。

2 番目の delete ステートメントが改善されました。

最初の削除ステートメントが改善された後:

この時点で削除操作は完全に完了します。

追加知識: myBatisをクエリする際は、およびスプライシング条件に注意してください

<!-- 条件を追加-->

<sql id="クエリーjiachaAllPageId">
 <どこ>
  <if test="danweimc !=null かつ danweimc !=''">
  そして jcb.danweimc は '%${danweimc}%' が好きです
  </if>
  <if test="ge_jianchaks !=null かつ ge_jianchaks !=''">
  かつ DATE_FORMAT(jcb.jianchaks, '%Y-%m-%d') >= #{ge_jianchaks}
  </if>
  <if test="le_jianchaks != null かつ le_jianchaks != ''">
  および DATE_FORMAT(jcb.jianchaks, '%Y-%m-%d') &lt;= #{le_jianchaks}
  </if>
  
  <if test="jiancharxm !=null かつ jiancharxm !=''">
  そして jcb.jiancharxm は '%${jiancharxm}%' のように
  </if>
  <if test="zhuangtai !=null かつ zhuangtai !=''">
  そして yhb.zhuangtai = ${zhuangtai}
  </if>
  <if test="danweilb !=null かつ danweilb !=''">
  そして yhb.yinhuanmc は '${danweilb}%' が好きです
  </if>
  <if test="jiedao != null かつ jiedao !='' かつ jiedao !='110105000000'">
  そして jcb.jiedao=#{jiedao}
  </if>
  <if test="danweimcs != null かつ danweimcs !=''">
  そして jcb.danweimc = #{danweimcs}
  </if>
 </どこ>
 </sql>

たとえば、異議申し立ての質問には「and」または「no」が追加されます。「and」または「no」クエリがある場合は、エラーが報告されることに注意してください。

myBatis の削除条件のスプライシング問題を解決する上記の記事は、編集者が皆さんと共有する内容のすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Mybatis-plusは条件を使用してSQL文を連結します。
  • MyBatisはSQL文字列を動的に連結します
  • MybatisPlusは文字列の逆連結を実装します

<<:  Vue は Websocket カスタマー サービス チャット機能を実装します

>>:  docker runの--rmオプションの使用方法

推薦する

MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。

需要背景統計インターフェースでは、フロントエンドは 2 つの配列を返す必要があります。1 つは 0 ...

JS変数ストレージのディープコピーとシャローコピーの詳しい説明

目次可変タイプとストレージスペーススタックメモリとヒープメモリ基本的なデータ型参照タイプグラフィック...

Linuxカーネルの浮動小数点演算のサポートに関する簡単な説明

現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...

JavaScriptの動作メカニズムの詳細な説明とイベントループについての簡単な説明

目次1. JavaScript がシングルスレッドなのはなぜですか? 2. タスクキュー3. イベン...

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

単一のMySQLテーブルを復元する手順

休憩中に、眠気を完全に吹き飛ばす電話がかかってきました。「開発者が更新 SQL を書くときに whe...

個人履歴書を作成するための HTML の簡単な実装

履歴書コード: XML/HTML コードコンテンツをクリップボードにコピー<!DOCTYPE ...

CSS3は遷移を高速化し、遅延させる

1. 速度制御機能を使用して、トランジション効果(加速、減速など)の速度曲線を制御します。速度制御機...

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

MySQLのストレージエンジンについてお話しましょう

基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...

フォーム要素の簡単な実装コードでは登録を例に挙げています

コード実装:コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

史上最も簡単な MySQL データのバックアップと復元のチュートリアル (パート 2) (パート 37)

データのバックアップと復元パート3の詳細は次のとおりです基本的な概念:バックアップ、現在のデータまた...

Linux で MySQL をインストールする簡単な方法

Linux に MySQL をインストールする方法をオンラインで検索すると、多くの方法が表示されまし...

js を使用してネットワークカメラを呼び出し、一般的なエラーを処理します

最近、業務上の理由により、Web ページ上のさまざまなネットワーク カメラにアクセスしてデバッグする...

Docker プライマリ ネットワーク ポート マッピング構成

ポートマッピングDocker コンテナを起動する前にポート マッピングを行わないと、コンテナ外部のネ...