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

推薦する

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

vue構成ファイルはルーティングとメニューインスタンスコードを自動的に生成します

目次前面に書かれたルータ.jsonルート生成メニュー生成効果要約する前面に書かれたルートを繰り返し記...

HTML ページ適応幅テーブル

WEB アプリケーションのページでは、テーブルがよく使用されます。列の数が限られているため、各列のコ...

ページのレンダリング時間を短縮してページの実行速度を速めます

ブラウザでのページのレンダリング時間をできるだけ短縮するにはどうすればよいでしょうか? この記事は、...

JavaScript の遅延読み込み属性パターンに関する簡単な説明

目次1. はじめに2. オンデマンド属性モード3. 乱雑な遅延読み込み属性パターン4. クラスの唯一...

Linux の traceroute コマンドの使用方法の詳細な説明

Traceroute を使用すると、情報がコンピュータからインターネットの反対側のホストまでたどるパ...

CentOS 6.4 で rpm を使用して MySQL をオフラインでインストールする

rpmインストールパッケージを使用してmysqlをオフラインでインストールします。参考までに準備:公...

Windows 10 に Apache 2.4.41 をインストールするチュートリアル

1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...

Linux で NFS のワンクリック展開を実装する方法

サーバー情報管理サーバー: m01 172.16.1.61サーバー: nfs01 172.16.1....

Mybatis mysqlの削除操作では、最初のデータメソッドのみを削除できます。

バグ図のように、削除文とパラメータをデータベースにコピーして実行し、2つのデータを削除しようとしたの...

Mysqlツリー再帰クエリの実装方法

序文部門テーブルなどのデータベース内のツリー構造データの場合、部門のすべての従属部門または部門のすべ...

MySQL での coalesce() の使用に関するヒントのまとめ

序文最近、偶然 MySQL の coalesce を発見しました。ちょうど時間があったので、MySQ...

ウェブサイトデザインにおいて非常に重要な概念であるdiv+floatの分析

ウェブサイトの構築では、HTML と CSS に関するさまざまな問題に常に遭遇します。ウェブサイト ...

MySQL 結合テーブルクエリの基本操作 左結合のよくある落とし穴

概要中小規模のプロジェクトでは、特にレポートを作成するときに、結合テーブル クエリが非常に一般的な操...

ブラウザでビデオプレーヤーを実装するための基本的な考え方とコード

目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...