最近学习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()不报错???如果程序异常的。应该怎样捕获这个异常呢???跪求高手??

解决方案 »

  1.   

    为你的log4j添加下如下配置,
    ibatis只是一个对jdbc的封装.自己先根据日志看下问题.# 定义一个用于解析ibatis查询语句的log4j文件
    log4j.logger.com.ibatis=debug 
    log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
    log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
    log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
    log4j.logger.java.sql.Connection=debug 
    log4j.logger.java.sql.Statement=debug 
    log4j.logger.java.sql.PreparedStatement=debug,stdout
      

  2.   


    没有的。我仔细看过配置跟你一样的。。再说了。DEBUG已经打出来了啊??
      

  3.   

    第一个问题
    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]
    就是error的异常呀?你想要什么样的?是insert value too large之类的吗?按一楼的配置应该是可以的。
      

  4.   

    我确实是想得到 “insert value too large” 我的配置是跟一楼一样的,但是就是没有。。非常诡异