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オプションの使用方法

推薦する

ソースコード分析からTomcatがサーブレットの初期化を呼び出す方法の詳細な説明

目次導入1. Tomcatを起動するコード2. Tomcatフレームワーク3. コンテナを作成する ...

Linux サーバー上の hosts ファイル構成の詳細な説明

Linux サーバーのホスト ファイルの構成hosts ファイルは、Linux システム内の IP ...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

Linuxのpasswdコマンドの使用

1. コマンドの紹介passwd コマンドは、ユーザー パスワード、アカウント ロック、パスワードの...

CSS 円形ホローイングの実装(クーポン背景画像)

この記事では主に、クーポンの背景画像などでよく使われる CSS 円形ホローイングについて紹介し、皆さ...

高性能ウェブサイトの最適化ガイド

パフォーマンスの黄金律:エンドユーザーの応答時間のわずか 10% ~ 20% が HTML ドキュメ...

Linux システムをバックアップする docker コマンドの詳細な説明

tar バックアップ システム sudo tar cvpzf backup.tgz --exclud...

MySQL 5.7.17 圧縮バージョンのインストールノート

この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...

SQL の左結合と右結合の原理と例の分析

テーブルが 2 つあり、テーブル A のレコードがテーブル B に存在しない可能性があります。左結合...

Excel エクスポートは docker 環境では常に失敗する

Excel のエクスポートは、docker 環境では常に失敗します。最も直接的な原因は、中国語フォン...

ブラウザのCSS、JavaScript、背景画像のキャッシュをクリアする簡単な方法

実際のプロジェクト開発プロセスでは、ページがサーバーにアップロードされます。サーバーへの負荷を軽減し...

MySQL のロックの仕組みと使用法の分析

この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...

HTML フローティング フレーム (iframe 読み込み HTML) の設定と使用の例

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

コードをコピーコードは次のとおりです。 <div class="content&qu...

トランザクションとロックを表示するための MySQL の一般的なステートメント

データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...