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

推薦する

Centos6.5 で MySQL 5.7.19 をインストールして設定する方法

Centos6.5にmysql5.7.19をインストールするための詳細な手順は次のとおりです。 1....

MYSQL 演算子の概要

目次1. 算術演算子2. 比較演算子3. 論理演算子4. ビット演算子5. 演算子の優先順位1. 算...

VMWare12 グラフィックチュートリアルで Apple Mac OS X をインストールする

1. はじめに:友人はシステム知識を学びたいと考えており、Apple のラップトップを使用していまし...

Linux サーバー上で複数の SVN リポジトリを構成するプロセスの詳細な説明

1. 指定されたディレクトリにリポジトリを作成し、ディレクトリ全体を保存してください。この記事のサン...

MySQL 8.0 バージョンで getTables がすべてのデータベース テーブルを返す問題の簡単な分析

序文この記事では、主にライブラリ内のすべてのテーブルを返すMysql8.0ドライバgetTables...

Docker環境でJenkinsを設定すると、タスクをビルドするときにコンソールログに文字化けした中国語の文字が表示されます

目次1. 問題の説明: 2. Jenkins設定のトラブルシューティング3. コードログのエンコード...

vite2.x は ant-design-vue@next コンポーネントのオンデマンド読み込みを実装します。

1. 使用バージョンバイト:2.0 ant-design-vue: 2.0.0-rc.8ヴュー:3...

MySQLにおける分散ロックの考え方をDBの助けを借りて詳しく説明します

序文スタンドアロン ロックであっても分散ロックであっても、共有データに基づいて現在の操作の動作を判断...

JavaでTomcatサーバーを起動/停止する方法

1. プロジェクト構造 2.Tomcat.javaを呼び出す パッケージ com.calltomca...

vue2.x の徹底研究 - h 関数の説明

目次解決、要約: vue プロジェクト。 .vue ファイルのテンプレート内に記述されたコードは、w...

JavaScript イベント キャプチャ バブリングとキャプチャの詳細

目次1. イベントの流れ1. コンセプト2. DOMイベントフロー2. イベントの委任1. イベント...

Docker を使用した JMeter+Grafana+Influxdb 監視プラットフォームの構築に関する詳細なチュートリアル

Jmeter がネイティブの結果表示機能を提供していることは誰もが知っています。ネイティブの結果表示...

Vue でインデックスをキー属性値として使用することが推奨されないのはなぜですか?

目次序文キーの役割差分アルゴリズムにおけるキーの役割ヘッドノードを同期するテールノードを同期する新し...

ウェブデザインと制作の一般的な原則をまとめる

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...