同時操作によるデータの重複を避けるために、データベースを操作するときにストアドプロシージャを使用してトランザクションを開始します。 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 コンテンツ キャッシュと共通パラメータ設定の詳細
1. MySQL にログインし、SHOW VARIABLES LIKE 'character...
目次defineComponent オーバーロード関数開発実務defineComponent 関数は...
プロジェクトで frameset 属性を使用したことがあるかどうかはわかりません。昨年、オンライン ...
日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...
それは何ですか? GNU Parallel は、1 台以上のコンピュータでコンピューティング タスク...
目次序文1. カスタムフォーカスコマンド1. 方法1 2. 方法2 3. 方法3 2. 入力ボックス...
MyISAM ストレージエンジンMyISAM ストレージ エンジンは、書き込みよりも読み取りが多く、...
コード例: パブリッククラスJDBCDemo3 { パブリック静的voiddemo3_1(){ bo...
JS アニメーションの代わりに CSS アニメーションを使用する必要があるのはなぜですか? Java...
序文これは私が最近見つけた新しい機能です。プロジェクトでの私の使用シナリオは次のとおりです。アプリケ...
序文Linux オペレーティング システムでは、デバイス ファイルは特別なタイプのファイルです。これ...
この記事では、タイムライン効果を実現するためのvue+swiperの具体的なコードを参考までに共有し...
リストスタイルのプロパティHTMLには、順序なしリストと順序ありリストの2種類のリストがあります。仕...
この記事では、WeChatアプレットの具体的なコードを参考までに紹介します。具体的な内容は次のとおり...
目次DockerのインストールNvidia-docker のインストールDockerのインストール1...