同時操作によるデータの重複を避けるために、データベースを操作するときにストアドプロシージャを使用してトランザクションを開始します。 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 ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
>>: Nginx コンテンツ キャッシュと共通パラメータ設定の詳細
HTML に触れる初心者は、いくつかの HTML タグを学びます。関連記事:初心者が学ぶ HTML...
目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...
プロキシを有効にする2つの方法React には、直接使用できるカプセル化された Ajax リクエスト...
1. Docker pullはイメージをプルします$ docker pull {IMAGE_NAME...
効果原理主にCSSグラデーションを使用して、切り取りを必要としない背景のくり抜きを実現します。クーポ...
目次イベントループmiscroTask (マイクロタスク) UI レンダリング (重要なポイント)次...
1. 括弧の役割1.1 角括弧 [ ]属性名が角括弧で囲まれている場合、右側には式の値が割り当てられ...
これは今日私が踏んだ4つの落とし穴を記念したものです...落とし穴1:地元のせいエラー:エラー 39...
MySQL データベース管理ソフトウェアには、エンタープライズ エディションとコミュニティ エディシ...
ダウンロードとインストール環境変数の設定インストール環境変数の設定確認基本的な描画の紹介グラフディグ...
100 以内の自然数をランダムに選択し、プレイヤーに 10 ラウンド以内にその数を推測させる数字推...
キャンバスを使ってカラフルな時計を書いてみよう! 1. タイトル(1)時計のケースが与えられ、ページ...
序文一部のプロジェクトの初期段階では、シンプルさとスピードのために、開発と展開は単一のマシンで行われ...
インストール環境: CentOS7 64ビット、MySQL5.7 1. YUMソースを設定するMyS...
1. インデックスはnull値を保存しないより正確に言うと、単一列インデックスには null 値は格...