Mybatis+mysqlはストアドプロシージャを使用してシリアル番号実装コードを生成します。

Mybatis+mysqlはストアドプロシージャを使用してシリアル番号実装コードを生成します。

同時操作によるデータの重複を避けるために、データベースを操作するときにストアドプロシージャを使用してトランザクションを開始します。

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetSerialNo`(IN tsCode VARCHAR(50),OUT result VARCHAR(200) )
始める 
 tsValue VARCHAR(50)を宣言します。 
 tdToday VARCHAR(20) を宣言します。  
 nowdate VARCHAR(20) を宣言します。  
 tsQZ VARCHAR(50)を宣言します。 
 t_error INTEGER DEFAULT 0 を宣言します。 
 SQLEXCEPTION の CONTINUE ハンドラーを宣言し、t_error=1 を設定します。 
 トランザクションを開始します。 
  /* sys_sno を更新し、sValue=sValue を設定します (sCode=tsCode); */
  sValue を tsValue に選択します (sys_sno から sCode=tsCode の場合)。 
  sQz を tsQZ に SELECT します ( sys_sno から sCode=tsCode )。 
 -- 因子テーブルにレコードがない場合は、初期値を挿入します。IF tsValue IS NULL THEN 
   CONCAT(DATE_FORMAT(NOW(),'%y%m'),'0001') を tsValue に選択します。 
   sys_sno を更新し、sValue=tsValue を設定します。ここで、sCode=tsCode です。 
   SELECT CONCAT(tsQZ,tsValue) INTO 結果; 
  それ以外     
   SUBSTRING(tsValue,1,4) を tdToday に選択します。 
   CONVERT(DATE_FORMAT(NOW(),'%y%m'),SIGNED) INTO nowdate を選択します。
   -- 年と月を更新する必要があるかどうかを判定します。IF tdToday = nowdate THEN 
    tsValue=CONVERT(tsValue,SIGNED) + 1 を設定します。 
   それ以外 
    CONCAT(DATE_FORMAT(NOW(),'%y%m') ,'0001') を tsValue に選択します。 
   終了の場合; 
   sys_sno を更新し、sValue = tsValue を設定し、sCode = tsCode を設定します。 
   SELECT CONCAT(tsQZ,tsValue) INTO 結果; 
  終了の場合; 
  t_error =1の場合 
  ロールバック; 
  結果 = 'エラー' を設定します。 
  それ以外 
  専念; 
  終了の場合; 
  結果を選択します。  
終わり;
ダオ
整数 getFaultNo(Map<String, String> パラメータ Map);

xml

<update id="getFaultNo" パラメータマップ="getFaultMap" ステートメントタイプ="CALLABLE">
  GetSerialNo(?,?) を呼び出す
 </更新>
 <!--
  パラメータマップ.put("tsCode", 0);
  パラメータマップ.put("結果", -1);
  -->
 <パラメータマップ タイプ="java.util.Map" id="getFaultMap">
  <パラメータプロパティ="tsCode" モード="IN" jdbcType="VARCHAR"/>
  <パラメータプロパティ="結果" モード="OUT" jdbcType="VARCHAR"/>
 </パラメータマップ>

電話

Map<String, String> パラメータ Map = new HashMap<String, String>();
  パラメータマップ.put("tsCode", "a");
  パラメータマップ.put("結果", "-1");
  パラメータマップを取得します。
  // 失敗ログを挿入 (メインテーブル)
  if (!parameterMap.get("result").equals("-1") && 
    !parameterMap.get("結果").equals("エラー")) {
   //成功} else {
   新しい RuntimeException() をスローします。
  }

要約する

上記は、エディターが紹介したストアド プロシージャを使用してシリアル番号を生成する mybatis+mysql の実装コードです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。エディターがすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Mybatis で Mysql ストアド プロシージャを使用する方法
  • mysql+mybatisはストアドプロシージャ+トランザクション+複数同時シリアル番号取得を実装します

<<:  VueプロジェクトにPWAを導入する手順

>>:  Nginx コンテンツ キャッシュと共通パラメータ設定の詳細

推薦する

77.9K の GitHub リポジトリを持つ Axios プロジェクト: 学ぶ価値のあることは何でしょうか?

目次序文1. Axiosの紹介2. HTTPインターセプターの設計と実装2.1 インターセプターの紹...

ウィンドウ表示効果を実現するJavaScript

この記事では、ウィンドウ表示効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

Linuxサーバーのディスク容量を拡張する方法

目次序文ステップ序文今日、es ログが記録されていないことに気付きました。filebeat、elas...

HTML+CSSを使用してマウスの動きを追跡する

ユーザーがプライバシーを意識するようになり、オンライン トラッキングに対する予防策を強化するにつれて...

MySQL ページング制限の実用的な最適化

序文クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要があり...

JavaScript で文字列を数値に変換する方法

目次1.parseInt(文字列、基数) 2. 数値() 3.parseFloat()主なメソッドは...

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

MySQL 5.7 インストール MySQL サービスを開始できませんが、サービスはエラーを報告しません

MySQL 5.7 をインストールするには 2 つの方法があります。1 つはインストーラをダウンロー...

Docker実行コンテナが作成状態にある問題についての簡単な説明

最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...

JavaScript でオブジェクトのプロパティを削除する方法

1. 削除delete は、オブジェクトのプロパティを残さずに削除する唯一の方法ですが、その「代替」...

2級コンピュータ試験のMySQL知識ポイント mysql alterコマンド

テーブル構造を編集するための MySQL の alter コマンドの使用。具体的な内容は以下のとおり...

docker nginxコンテナの起動とローカルへのマウントの詳細な説明

まず、nginx コンテナ内の構造:コンテナを入力します: docker exec -it b511...

Docker コンテナのネットワーク設定によく使われるコマンドの詳しい説明

基本的なネットワーク構成Docker はイメージに基づいて複数のコンテナを「開く」ことができ、各コン...

CSS を使用して画像の下の空白を数ピクセル消去する方法の詳細な説明

最近、友人が私に質問をしました。ページをレイアウトすると、画像の下に 1 ~ 2 ピクセルの空白があ...

Nginx ポート競合を解決するトラブルシューティング方法の例

問題の説明データ転送に Nginx を使用し、フロントエンドとバックエンドが分離された Spring...