序文Mysql は重複しないデータを挿入します。大量のデータを挿入する必要がある場合、挿入が重複しているかどうかを判断してから挿入する必要があります。では、効率を向上させるにはどうすればよいでしょうか。問題を解決する方法は数多くあり、シナリオによって解決策は異なります。データ量が少ない場合は、どのような解決策でも問題ありませんが、データ量が多い場合は、単純な問題ではありません。 1. ignore を挿入
コントローラーメソッド: /** *従業員データを挿入*/ @PostMapping("保存") @レスポンス本文 パブリック CommonResult<Employee> 保存(@RequestBody Employee 従業員) { employeeService.saveEmp(従業員) を返します。 } 挿入する <!--従業員データを挿入--> <挿入 id="saveEmp" パラメータタイプ="com.dt.springbootdemo.entity.Employee"> t_employee(ID、名前、年齢、給与、部門ID)に挿入します。 値 (#{id},#{name},#{age},#{salary},#{departmentId}) </挿入> 主キー ID 1 を持つ新しい従業員レコードを追加します。 リクエストを再度送信すると、主キーが一意であり、ID=1 のレコードがすでに存在するため、SQL ステートメント実行エラーが報告されます。 無視を追加し、ID=1 の別の従業員レコードを追加します。 挿入無視 エラーは発生しませんでしたが、追加は成功せず、重複データの追加は無視されました。 2. 重複キーの更新時
重複キー更新時 id = id ID=1 の従業員レコードを挿入し、他のフィールド (年齢=25) を変更します。 データベースレコードを表示します: 変更はなく、データは 1 つだけであり、成功のプロンプトが返されていることがわかります。 この方法には前提条件があり、挿入する制約は主キーまたは一意制約である必要があります (業務において、唯一の判断基準として使用する必要のあるフィールドは、一意制約、つまり一意キーとして設定する必要があります)。 拡張: この方法には、他のビジネス シナリオのニーズもあります ->>>他のフィールドを定期的に更新します。 従業員テーブルに時間フィールドを追加します。 プライベート日付更新時間; 次に、updateTime フィールドに従ってデータを挿入します。 <挿入 id="saveEmp" パラメータタイプ="com.dt.springbootdemo.entity.Employee"> t_employee(ID、名前、年齢、給与、部門ID、更新時刻)に挿入します。 値 (#{id},#{name},#{age},#{salary},#{departmentId},now()) 重複キー更新の場合 update_time = now() </挿入> 挿入時に他のフィールド (年齢など) を更新する必要がある場合はどうすればよいですか? 3. を置き換える
置換する <!--従業員データを挿入--> <挿入 id="saveEmp" パラメータタイプ="com.dt.springbootdemo.entity.Employee"> t_employee(id, name, age, salary, department_id,update_time) に置き換えます。 値 (#{id},#{name},#{age},#{salary},#{departmentId},now()) </挿入> 要約: 実際の開発では、2 番目の方法であるバッチ追加が最も一般的に使用されます。 <!--従業員データを挿入--> <挿入 id="saveEmp" パラメータタイプ="java.util.List"> t_employee(ID、名前、年齢、給与、部門ID、更新時刻)に挿入します。 価値観 <foreach collection="リスト" item="項目" index="インデックス" セパレーター=","> (#{item.id},#{item.name},#{item.age},#{item.salary},#{item.departmentId},now()) </foreach> 重複キー更新時 id = id </挿入> コントローラ: @PostMapping("保存") @レスポンス本文 パブリック CommonResult<従業員> 保存(@RequestBody リスト<従業員> 従業員リスト) { employeeService.saveEmp(employeeList) を返します。 } 同じIDが存在する場合、重複して追加されることはありません。 要約する実際の業務では、方法 2 が最も一般的に使用される方法であり、さまざまなシナリオに応じてさまざまな方法が使用されます。 これで、MySql バッチ挿入時に重複なしでデータを挿入する方法に関するこの記事は終了です。MySql の重複なし挿入に関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS3プロパティline-clampはテキスト行の使用を制御します
MySQL ショートリンクの設定方法1. mysql 接続番号ステートメントコマンドを確認します。 ...
この記事の例では、要素UIテーブルにドロップダウンフィルタリングを実装するための具体的なコードを参考...
導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...
/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...
フロントエンドとバックエンドがやり取りする場合、get または delete を介してバックエンドに...
Docker は本当に素晴らしいです。特に、仮想マシンを使用する場合に比べて、Docker イメージ...
1. Docker 起動時の異常なパフォーマンス: 1. ステータスが繰り返し再起動している場合は、...
HTML を使用して動的な Web クロックを作成します。コードは次のとおりです。 <!DOC...
1. Apacheをインストールする # yum インストール -y httpd httpd-de...
この記事では、例を使用して、MySQL 派生テーブルの簡単な使用方法を説明します。ご参考までに、詳細...
1. 効果を達成する 2 知識ポイント2.1 <label> タグHTML では、<...
環境: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-glibc2.5...
秘密鍵を開かずにリモート サーバーのデータベースに接続するのは非常に便利です。新しい接続でデータを入...
この CSS リセットは、Eric Meyers の CSS リセットに基づいて変更されており、特に...
3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...