iBaits中,关于insert返回值的问题(注意!!!不必写resultClass= "java.lang.Integer",方法的返回值就是int)

今天工作中使用iBaits写SQL,其中一个是insert语句



在sqlMap中我这么写了,<insert

                                      parameterClass="...."

                                      resultClass="java.lang.Integer" >


于是报出了以下的错误:

org.xml.sax.SAXParseException: Attribute "resultClass" must be declared for element type "insert".


首先 先不说我的错误,主要是这个错误信息,在网上查了一下,有问题!


正确的 错误信息应该是:

org.xml.sax.SAXParseException: Attribute "resultClass" must not be declared for element type "insert".

 

然后 分析一下错误的原因:

 

在JDBC中我们都知道的Statement的两个方法

 ResultSet executeQuery (String  sql)
          Executes the given SQL statement, which returns a single ResultSet object.
 int executeUpdate (String  sql)
          Executes the given SQL statement, which may be an INSERT , UPDATE , or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

 

      这两个方法,其中结果集就是我们一般定义的SQLID001Output.java,但是作为更新或插入的件数,是系统自动返回的,所以我们不需要设置,在用iBaits中executeForUpdate方法的返回值就是int ,如果我们在sqlMap中在写上返回值,那就是画蛇添足,同时还会报出上面那个非常让你迷惑的错误信息。

 

 

 

 

 

 

你可能感兴趣的:(sql,工作,jdbc,delete,insert)