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);
?}