ibatis插入数据库时返回主键(sqlserver数据库)

来源:互联网 发布:天籁之战 知乎 编辑:程序博客网 时间:2024/05/05 05:13

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 resultNo 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]





















0 0
原创粉丝点击