ibatis插入数据后立即返回主键值,sqlserver数据库,一开始采用如下:
<insert id="insertEvalutionComment" parameterClass="com.dt.jxhd.domain.evalution_teacher_comment">
insert into evalution_comment (grade, comment)
values (#grade:VARCHAR#, #comment:VARCHAR#)
<selectKey resultClass="int" keyProperty="id" >
select SCOPE_IDENTITY() as id
</selectKey>
</insert>
SELECT SCOPE_IDENTITY()会报错,报如下错误:
[java.sql.PreparedStatement]-[DEBUG] {pstm-100073} PreparedStatement: insert into evalution_comment (grade, comment) values (?, ?)
[java.sql.PreparedStatement]-[DEBUG] {pstm-100073} Parameters: [10, 20000]
[java.sql.PreparedStatement]-[DEBUG] {pstm-100073} Types: [java.lang.String, java.lang.String]
[java.sql.PreparedStatement]-[DEBUG] {pstm-100074} PreparedStatement: SELECT SCOPE_IDENTITY() as id
[java.sql.PreparedStatement]-[DEBUG] {pstm-100074} Parameters: []
[java.sql.PreparedStatement]-[DEBUG] {pstm-100074} Types: []
[java.sql.ResultSet]-[DEBUG] {rset-100075} ResultSet
[java.sql.ResultSet]-[DEBUG] {rset-100075} Header: [id]
[java.sql.ResultSet]-[DEBUG] {rset-100075} Result: [0]
[org.apache.struts2.dispatcher.Dispatcher]-[ERROR] Could not find action or result
No result defined for action com.dt.jxhd.action.PjglAction and result Exception - action - file:/D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%208.0/webapps/jxhd/WEB-INF/classes/strutsConfig.xml:549:86
后来换成“SELECT @@IDENTITY AS ID”
<insert id="insertEvalutionComment" parameterClass="com.dt.jxhd.domain.evalution_teacher_comment">
insert into evalution_comment (grade, comment)
values (#grade:VARCHAR#, #comment:VARCHAR#)
<selectKey resultClass="int" keyProperty="id" >
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
java代码是:
return ((Integer)getSqlMapClientTemplate().insert("evalution_comment.insertEvalutionComment",t_teacher_comment)).intValue();
测试可以通过
打印日志:
[java.sql.PreparedStatement]-[DEBUG] {pstm-100025} PreparedStatement: insert into evalution_comment (grade, comment) values (?, ?)
[java.sql.PreparedStatement]-[DEBUG] {pstm-100025} Parameters: [10, 该生难教]
[java.sql.PreparedStatement]-[DEBUG] {pstm-100025} Types: [java.lang.String, java.lang.String]
[java.sql.PreparedStatement]-[DEBUG] {pstm-100026} PreparedStatement: SELECT @@IDENTITY AS ID
[java.sql.PreparedStatement]-[DEBUG] {pstm-100026} Parameters: []
[java.sql.PreparedStatement]-[DEBUG] {pstm-100026} Types: []
[java.sql.ResultSet]-[DEBUG] {rset-100027} ResultSet
[java.sql.ResultSet]-[DEBUG] {rset-100027} Header: [ID]
[java.sql.ResultSet]-[DEBUG] {rset-100027} Result: [43]