最初のステップ:
keyProperty keyProperty JavaオブジェクトのプロパティuseGeneratedKeysです。
<ID = "insert" parametertype = "Spares" usegeneratedkeys = "true" keyproperty = "id"> spares(spares_id、spares_name、spares_type_id、spares_spec)values(#{id}、#{name}、#{typeid}、#{essitステップ2:
MyBatisがINSERTステートメントを実行した後、オブジェクトSparesのプロパティIDに自己侵入値を自動的に割り当てます。したがって、スペアに対応するゲッターメソッドを介して取得できます!
/** *スペアパーツの追加 * @Author Hellostory * @Param Spares * @return */@RequestMapping(value = "/insert")@responsebody public jsonResponse insert(spares spares){int count = sparesservice.insert(spares); system.out.println( "合計" + count + "レコード!" + "/n挿入されたレコードの主要な自己成長値は、" + Spares.getId());PS:MyBatisは挿入されたデータの自己成長IDを返します
今日、このテストはバグを報告しました。この現象は、新しく登録されたユーザーが全員のレポートを見ることができるということです。古いユーザーには問題ありません。ログをチェックすると、新しく登録されたユーザーのIDがnullであることがわかったため、完全なテーブル有効なデータクエリが実行されました。ただし、テーブルの主要なキーは空にすることは許可されていないため、新しい登録ユーザーIDはどのようにしてnullになりますか?その理由は、サービスレイヤー内のコードがパラメーターオブジェクトを直接返し、XMLが構成を作成しないためです。
特定のソリューションは、XMLで挿入メソッドを構成することです
usegeneratedKeys =” true” keyproperty =” registerid”
KeyProperty値は、エンティティVOオブジェクトの主要なキー属性に対応します
詳細は次のとおりです。
<Code> @Override public Registers Create(Registers R){registersmapper.insert(r); rを返します。 } </code>RegisterMapper.xmlの挿入方法は次のとおりです。
<code> <挿入id = "insert" keyproperty = "registid" parametertype = "com.ciji.zzaservice.pojo.base.registers" usedgeneratedkeys = "true">
通常の挿入ステートメントを実行します
</insert> </code>
このようにして、コントローラー層に新しく挿入されたデータの自己成長の主要なキーを取得できます。
XMLに2つの属性を追加することの意味に関して、オンラインの説明は次のとおりです。
UseGeneratedKeys
(挿入にのみ使用)これは、MyBatisにJDBCのGetGeneratedKeysメソッドを使用して、データによって内部で生成された主要なキー(MySQLやSQL Serverなどのデータベース管理システムの自動インクリメントフィールドなど)を取得するように指示します。デフォルト値:false。
keyproperty
(挿入にのみ使用)プロパティをマークすると、MyBatisはGetGeneratedKeysまたはINSERTステートメントのSelectKey Child Elementを通じてその価値を設定します。デフォルト:設定されていません。
要約します
上記は、編集者が導入した挿入レコードの自己成長フィールド値(ID)です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!