ibatis selectKey 配置
<!--??My?sql?SEQUENCE-->???
?<insert???id="insertUser-MY-SQL"???parameterClass="user">???
???????INSERT???INTO???T_USER???(name,?sex)?VALUES?(#name#,#sex#)???
???????<selectKey???resultClass="int"???keyProperty="id"?>???
???????????SELECT???LAST_INSERT_ID()?as?id??
???????</selectKey>???
?</insert>?
?
?<!--?Oracle?SEQUENCE??-->???
?<insert?id="insertUser-ORACLE"?parameterClass="user">????
?<selectKey?resultClass="int"?keyProperty="id"?type="pre">????
?<![CDATA[
?SELECT?STOCKIDSEQUENCE.NEXTVAL?AS?ID?FROM?DUAL
?]]>??
?</selectKey>?
?<![CDATA[
?INSERT?INTO?t_user(id,name,sex)VALUES(#id#,#name#,#sex#)
?]]>
?</insert>?
?
?<!--?Microsoft?SQL?Server?IDENTITY?Column?-->????
?<insert??id="insertUser-MS-SQL"?parameterClass="user?">????
?<![CDATA[
?INSERT???INTO???T_USER???(name,?sex)?VALUES???(#name#,#sex#)??
?]]>????
?<selectKey?resultClass="int"?keyProperty="id"?type="post">????
?<![CDATA[
?SELECT?@@IDENTITY?AS?ID?
?]]>?
?<!--?该方法不安全?应当用SCOPE_IDENTITY()?但这个函数属于域函数,需要在一个语句块中执行。?-->??
?</selectKey>????
?</insert>?
?
?<!--?Microsoft?SQL?Server?IDENTITY?Column?改进-->????
?<insert?id="insertUser-MS-SQL"?parameterClass="user">????
?<selectKey?resultClass="int"?keyProperty="id">????
?<![CDATA[
?INSERT???INTO???T_USER???(name,?sex)?VALUES???(#name#,#sex#)???
????SELECT?SCOPE_IDENTITY()?AS?ID?
?]]>??
?</selectKey>????
?</insert>?
----------------------------------------------------
以sql server为例,举个实例:
配置文件中:
<insert id="saveProject" parameter>
??<selectKey resultkeyProperty="projectId">??
??<![CDATA[
??insert into PROJECT(projectName,description)
??values(#projectName#,#description#)?
??SELECT SCOPE_IDENTITY() AS projectId
??]]>
?</selectKey>
?</insert>?
?
DaoImpl中代码:
?public Integer saveProject(ProjectVO projectVO){
??return (Integer)getSqlMapClientTemplate().insert("commonMap.saveProject", projectVO);
?}