MyBatisをPersistenceレイヤーとして使用する場合、INSERTステートメントはデフォルトでレコードの主要なキー値を返さず、挿入されたレコードの数を返します。ビジネスレイヤーがレコードの主要なキーを取得する必要がある場合、この関数は構成によって完了することができます。
シーケンスプライマリキーの場合、挿入SQLを実行する前に、OracleやDB2などのレコードを挿入するためにプライマリキー値を指定する必要があります。次の構成方法を使用できます。
<ID = "add" add "parametertype =" vo.category "> <selectkey resultType =" java.lang.short "order =" keyproperty = "id"> select seq_test.nextval> select key> inserting into category(name_zh、parent_id、show_ord (#{namezh、jdbctype = varchar}、#{parentid、jdbctype = smallint}、#{showorder、jdbctype = smallint}、#{deletestatus、jdbctype = bit}、#{description、jdbctype = varchar})</insert>自己充填プライマリキーを備えたテーブルの場合、挿入するときに主要なキーは必要ありませんが、挿入プロセス中に自己注入の主要なキーが自動的に取得されます。たとえば、MySQLでは、次の2つの構成方法を採用できます。
<挿入id = "add" parametertype = "vo.category" usegeneratedkeys = "true" keyproperty = "id"> category(name_zh、parent_id、show_order、delete_status、description)valuesに挿入(#{namezh、jdbctype = varchar}、#{parentid、jdbctype = smallint}、#{showorder、jdbctype = smallint}、#{deletestatus、jdbctype = bit}、#{description、jdbctype = varchar})</insert>または
<ID = "add" parametertype = "vo.category"> <selectkey resulttype = "java.lang.short" order = "aby" keyproperty = "keyproperty =" id "> select last_insert_id()as id </selectkey>挿入カテゴリ(name_zh、parent_id、show_ord (#{namezh、jdbctype = varchar}、#{parentid、jdbctype = smallint}、#{showorder、jdbctype = smallint}、#{deletestatus、jdbctype = bit}、#{description、jdbctype = varchar})</insert>挿入操作が完了した後、パラメーターカテゴリのID属性が割り当てられました
データベーステーブルの主要なキーが自己挿入型ではない場合、アプリケーションレイヤーはプライマリキーを生成する必要があります.....これについてはあまり言いません。それを必要とする友達は、コミュニケーションにメッセージを残すことができます。
以下は、Oracleの執筆方法です。 Oracleには自動インクリメントがありませんが、トリガーで実装されたCurrvalはトリガーで定義されています。
<ID = "insert" insert "parameterClass =" profeekindobject "> <! keyProperty = "Kindid"> Select Sece selece Seq_t_pro_feekind_id.currval as dual </selectkey> </insert> <! - 以下はmysql - > <! - <selectkey resultclass = "int" keyproperty = ""> select @ @select @select </selectkey> - >
その他の参照コード:
エンティティオブジェクト(オブジェクトの保存など)を持続する場合、SelectKeyを使用しない場合、EntityオブジェクトのID属性、つまりデータテーブルプライマリキーをすぐに取得しません。
Javaコード
許可許可=新しい許可();許可。Set... permisondao.createpermission(許可); assertnull(許可);許可許可=新しい許可();許可。Set... permisondao.createpermission(許可); assertnull(許可);
SelectKey要素は、親要素の位置に関連しています
<ID = "addPermission" parameterClass = "Permission"> <SelectKey resultClass = "int" keyproperty = "perminderId"> select seq_p_permission.nextval> selectkey> pemissionid、permissioninfo、permissionname、permissionname、url)値 #permissionEnName#, #url#) </insert><insert id="addPermission" parameterClass="Permission"><selectKey resultClass="int" keyProperty="permissionId"> SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL </selectKey> INSERT INTO P_PERMISSION (PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL) VALUES (#permissionId#, #permissionInfo#、#permissionName#、#permissEnname#、#url#)</insert>
mysqlとsqlserverが遅れています
XMLコード
<ID = "addPermision" parameterClass = "permission"> p_permission(permissionId、permissionInfo、permissionName、permissionName、url)Values(#permissionId#、#permissionInfo#、#permissionName#、#permissionEnname#、#url#) </selectKey> </insert> <insertid = "addPermission" parameterClass = "permintersclass"> p_permission(permissionId、permissioninfo、permissionName、permissionEnname、url)Values(#permissionID#、#permissionInfo#、#permissionName#、##permissenname last_insert_id()</selectkey> </insert>
上記のように書かれている、それはSelectKeyの場所にあまりにも密接に関連しています。 IBATISのSQLMAP構成ファイルのSelectKey要素には、PREまたはPOSTが世代の前または後に生成を表すかどうかを指定できる型属性があります。
Oracleの場合、そうです
XMLコード
<ID = "addPermission" parameterClass = "permission"> <selectkey resultClass = "int" keyproperty = "permissid" type = "pre"> Select seq_p_permission.nextval> selectKey> p_permission(permission、permissioninfo、permissionname、permissionname、URL #permissionName#、#permissionEndame#、#url#)</insert> <insert> <insert id = "addpermersclass =" permersionclass "> <selectkey resultclass =" int "keyproperty =" keyproperty = "keyproperty =" keyproperty = "permissid" type = "pre"> select seq_p_permission.nextval url)values(#permissionId#、#permissionInfo#、#permissionName#、#permissEnname#、#url#)</insert>
mysql、sqlserverなどは次のように表現されています。
XMLコード
<ID = "addPermission" parameterClass = "Permission"> <SelectKey resultClass = "int" keyproperty = "permissid" type = "post"> select last_insert_id()</selectkey> permissid、permissionInfo、permissionName、permissenmame、url #permissionEnname#、#url#)</insert>
上記は、編集者が紹介したMybatisのMybatisの主要な鍵を返す方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!