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

推薦する

マークアップ言語 - テキストの CSS スタイルを指定する

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

nginxリバースプロキシを使用するときに長時間接続を維持する方法

・【シーン説明】 HTTP1.1 以降、HTTP プロトコルは永続的な接続 (長い接続とも呼ばれます...

js 属性オブジェクトの hasOwnProperty メソッドの使用

オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...

VMware 上の CentOS に Oracle12.2 をサイレント インストールする詳細なグラフィック チュートリアル

環境準備: VMware+CentOS、jdk 1. システムディスクのサイズを確認する1. コマン...

Dockerfile テキストファイルの使用例の分析

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...

MySQL パーティションテーブルの正しい使用方法

MySQL パーティションテーブルの概要数億、あるいは数十億ものレコードを格納するテーブルに遭遇する...

MySQL の同時実行性の問題と解決策の分析

目次1. 背景2. テーブルロックによるクエリの遅延3. オンラインでテーブル構造を変更するとどのよ...

Linux calコマンドの使用

1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...

MySQL における識別子の大文字と小文字の区別の問題の詳細な分析

MySQL では、テーブル名の大文字と小文字の区別の問題が発生する可能性があります。実際、これはプラ...

プロフェッショナルなMySQL開発設計仕様とSQL記述仕様

チーム開発のプロセスでは、プロジェクトの安定性、コードの効率性、管理の利便性のために、内部開発および...

nodejsとyarnをインストールし、Taobaoソースプロセスレコードを構成する

目次1. nodejsをダウンロードする2. ダブルクリックしてインストール3. グローバル npm...

MySQLデータベースのマスタースレーブレプリケーションと読み取り書き込み分離に関する詳細なチュートリアル

目次序文1. MySQL マスタースレーブレプリケーション1. サポートされているレプリケーションの...

デジタル時計効果を実現するJavaScript

この記事の例では、JavaScriptでデジタル時計効果を実装するための具体的なコードを参考までに共...

デザイン理論:人間中心のグリーンデザイン

「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...

vue+el-element でファイル名に応じてダイアログを動的に作成する実践

目次背景成し遂げる1. カプセル化された /utils/dialogControl.js 2.ダイア...