INSERT時にIDを自動採番する

IDを自動採番するには、selectKey要素をつかいます。keyPropertyを指定しておくと、parameterClassで指定したオブジェクトのIDに採番した値を自動設定してくれます。

シーケンスを使う場合

type="pre"に設定します。シーケンスオブジェクトを使って自動採番した後、Insert文にIDを設定してくれる(はず)。

<insert id="insertClass" parameterClass="TestClass">
  <selectKey keyProperty="classId" resultClass="int" type="pre" >
    SELECT NEXTVAL('classid_seq')
  </selectKey>
  INSERT INTO Test_Class (
    Rec_No, Cls_Name, Cls_Note
  )
  VALUES (
     #classId#, #className#, #classNote#
  )
</insert>	

MySQLのAuto Increment使う場合

type="post"に設定します。postにしておかないと、Insert文実行前(Auto Incrementによる採番前)に「SELECT LAST_INSERT_ID() 」が実行されて、IDが取得できないようです。
(EntityのIdを標準出力してみると、0が出力)

<insert id="insertClass" parameterClass="TestClass">
  <selectKey keyProperty="classId" resultClass="int" type="post" >
    SELECT LAST_INSERT_ID() AS GEN_Id
  </selectKey>
  INSERT INTO Test_Class (
    Rec_No, Cls_Name, Cls_Note
  )
  VALUES (
     NULL, #className#, #classNote#
  )
</insert>	

Javaソースコードの例。entityには自動採番したIDが設定されています。

public void insert(BookSummary entity) {       
   super.getSqlMapClientTemplate().insert("insertClass", entity);       
}