MybatisのuseGeneratedKeysとselectKeysの基本的な使い方と違い
1705 ワード
一、useGeneratedKeys
データベース自体がプライマリ・キーの自動成長機能を備えているため、useGeneratedKeys oracleではtrueがサポートされていません.
(insert and update only)This tells MyBatis to use the JDBC getGeneratedKeys method to retrieve keys generated internally by the database(e.g.auto increment fields in RDBMS like MySQL or SQL Server).Defauult:false(挿入と更新のみ)この訴えMyBatisはJDBC getGeneratedKeysメソッドを使用してデータベース内部で生成された鍵を取得する(たとえば、RDBMSの自動増分フィールド(MySQLやSQL Serverなど).デフォルト:false
二、selectKey
データベースがuseGeneratedKeys="true"をサポートしていない場合は、selectKey(oracleなど)を使用します.
mysqlにはlast_insert_id()という方法があり、
selectKeyプロパティ:
属性名
意味
keyProperty
selectKey文のターゲット属性
resultType
結果のタイプ.MyBatisは通常計算できますが、書いても問題ありません.MyBatisは文字列を含む単純なタイプをプライマリ・キーのタイプとして使用できます.
order
BEFOREまたはAFTER.BEFOREに設定すると、プライマリ・キーが最初に問合せられ、keyPropertyが設定されてから挿入文が実行されます.AFTERに設定すると、まず挿入文が実行され、次にプライマリ・キーが取得されます.これはOracleデータベースと同様に、挿入文にシーケンス・コールを埋め込むことができます.
statementType
MyBatisは、PreparedStatementタイプとCallableStatementタイプを表すSTATEMENT、PREPARED、CALLABLE文のマッピングタイプをサポートします.
注意点高同時性の場合、mysqlのlast_insert_id()の戻り値は、他の人が操作しているデータが返すidであり、保険操作は一意のインデックスに基づいてデータを再問合せすることである.
データベース自体がプライマリ・キーの自動成長機能を備えているため、useGeneratedKeys oracleではtrueがサポートされていません.
insert into tableName (colName) values (#{colVal,jdbcType=VARCHAR})
(insert and update only)This tells MyBatis to use the JDBC getGeneratedKeys method to retrieve keys generated internally by the database(e.g.auto increment fields in RDBMS like MySQL or SQL Server).Defauult:false(挿入と更新のみ)この訴えMyBatisはJDBC getGeneratedKeysメソッドを使用してデータベース内部で生成された鍵を取得する(たとえば、RDBMSの自動増分フィールド(MySQLやSQL Serverなど).デフォルト:false
二、selectKey
データベースがuseGeneratedKeys="true"をサポートしていない場合は、selectKey(oracleなど)を使用します.
select currval('seq_name') from dual
insert into tableName (colName) values (#{colVal,jdbcType=VARCHAR})
mysqlにはlast_insert_id()という方法があり、
ラベルで使用できます.selectKeyプロパティ:
属性名
意味
keyProperty
selectKey文のターゲット属性
resultType
結果のタイプ.MyBatisは通常計算できますが、書いても問題ありません.MyBatisは文字列を含む単純なタイプをプライマリ・キーのタイプとして使用できます.
order
BEFOREまたはAFTER.BEFOREに設定すると、プライマリ・キーが最初に問合せられ、keyPropertyが設定されてから挿入文が実行されます.AFTERに設定すると、まず挿入文が実行され、次にプライマリ・キーが取得されます.これはOracleデータベースと同様に、挿入文にシーケンス・コールを埋め込むことができます.
statementType
MyBatisは、PreparedStatementタイプとCallableStatementタイプを表すSTATEMENT、PREPARED、CALLABLE文のマッピングタイプをサポートします.
注意点高同時性の場合、mysqlのlast_insert_id()の戻り値は、他の人が操作しているデータが返すidであり、保険操作は一意のインデックスに基づいてデータを再問合せすることである.