iteye_17060
2010-04-16 14:53
浏览 247
已采纳

spring+iBATIS 问题 请教高手

最近学习Spring+ibatis的时候 碰到一个问题:部分代码如下
msgTempSend.setSendtype("2222222222222");
public Object insertStudent(Student student) {
return sqlMapClientTemplate.insert("Student.insertStudent", student);
}
如上 数据库中Sendtype 字段 是number(2),所以在插入时候的应该会插入异常。但是我的代码在执行的时候日志到
2010-04-16 14:34:41,359 INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
2010-04-16 14:34:41,359 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] - Looking up default SQLErrorCodes for DataSource [org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy@ed7d11]
2010-04-16 14:34:41,359 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Fetching JDBC Connection from DataSource
2010-04-16 14:34:41,359 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Fetching JDBC Connection from DataSource
就停下了。。没有异常信息。
另外如果插入的值正常的话。是可以成功插入的。。

第二个问题:我看API insert方法应该会throws 一个异常 ,但是为什么在编码时。没有try catch()不报错???如果程序异常的。应该怎样捕获这个异常呢???高手??

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • waterdh1 2010-04-16 15:37
    已采纳

    刚没注意看,DataAccessException是继承与RuntimeException, 运行期异常在编译期是不需要检查的。

    打赏 评论
  • waterdh1 2010-04-16 15:00

    问题一:
    肯定出异常的,只是你没有捕获到

    问题二:
    如果在方法上显式地声明这个方法抛出异常,这时候编码需要加try catch。你可以这样捕捉
    [code="java"]
    try{
    return sqlMapClientTemplate.insert("Student.insertStudent", student);
    }catch(Throwable e){
    e.printStrack();
    return -1;
    }
    [/code]

    打赏 评论
  • waterdh1 2010-04-16 16:15

    不知道你用的是什么数据库,ibatis能否拿到异常也跟底层的jdbc驱动实现有关,我用的mysql是可以捕捉到too long异常的。

    打赏 评论
  • waterdh1 2010-04-16 17:20

    那你return得到的值是啥?实在不行根据返回值判断呗。

    打赏 评论

相关推荐 更多相似问题