`
java_frog
  • 浏览: 253068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于ibatis参数为null值时报错

阅读更多
我先把打印的错误贴出来
2010-6-21 14:04:13 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.sql.SQLException: 无效的列类型
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:285)
	at oracle.jdbc.driver.OracleStatement.get_internal_type(OracleStatement.java:5465)
	at oracle.jdbc.driver.OraclePreparedStatement.setNull(OraclePreparedStatement.java:1028)
	
at org.apache.commons.dbcp.DelegatingPreparedStatement.setNull(DelegatingPreparedStatement.java:105)

	at com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.setParameter(ParameterMap.java:172)
	at com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.setParameters(ParameterMap.java:126)
	at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:78)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94)
	at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:457)
	at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
	at org.springframework.orm.ibatis.SqlMapClientTemplate$10.doInSqlMapClient(SqlMapClientTemplate.java:372)
	at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:188)
	at org.springframework.orm.ibatis.SqlMapClientTemplate.update(SqlMapClientTemplate.java:370)
	at com.cssweb.common.security.user.dao.impl.UserBasicInfoWriteDAOImpl.updateLockDateByUserId(UserBasicInfoWriteDAOImpl.java:36)
	at com.cssweb.common.security.user.dao.impl.UserBasicInfoDAOImpl.updateLockDateByUserId(UserBasicInfoDAOImpl.java:49)
	at com.cssweb.common.security.user.service.UserService.updateLockDateByUserId(UserService.java:164)
	at com.cssweb.common.security.user.web.UserAction.login(UserAction.java:228)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
	at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.cssweb.common.web.filter.FiltrateRequestParamterFilter.doFilter(FiltrateRequestParamterFilter.java:81)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:595)



我分别用tomcat5.5和6.0部署,但是在6.0会出现这种错误,在5.5中用的是工程中导入的commons-dbcp-1.2.2.jar,而在6.0时候tomcat在lib目录下自有tomcat-dbcp.jar,所以如果在ibatis传入参数为null值的时候,须在变量中指定类型,如#id:NUMBER#,#name:VARCHAR2#,...,这样就可以避免这种错误了.
另外,jsp-api.jar如果冲突的话,JSP页面编译不会通过,所以在开发部署的过程中,需注意.

分享到:
评论

相关推荐

    ibatis教程 输入参数详解

    参数可以通过`#{}`语法在SQL语句中引用,ibatis会自动进行类型转换和值绑定。 ### resultMap `resultMap`是ibatis中一个重要的概念,用于描述SQL查询结果与Java对象之间的映射关系。通过`resultMap`可以实现复杂的...

    ibatis的错误总结

    这里的问题在于`parameterClass`被设定为`Long`,但实际传递的参数`roleId`的值是通过`#roleId#`引用的。然而,如果`roleId`是作为`Map`的一个键值对传递的,那么`parameterClass`应该被设置为`java.util.Map`。因此...

    ibatis中输入输出各种类型的参数分析及#与$区别

    - 性能: 当参数值为`null`时,`#{}`会根据实际情况转换为对应的SQL关键字(如`NULL`),而不是简单的去除,这有助于保持SQL语句的结构完整性。 - 示例: `select * from users where id = #{id}` - **${}**: - ...

    ibatis的多参数查询.doc

    在使用ibatis(现称为MyBatis)进行数据库操作时,经常会遇到需要处理多个输入参数的情况。然而,默认情况下ibatis只支持单个输入参数,这在实际开发中往往难以满足需求。本文将详细介绍如何在ibatis中实现多参数...

    ibatis3批量插入

    通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...

    关于Ibatis的jar包

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责简化数据库操作,使得开发者能够将注意力集中在SQL语句的编写上,而无需过多关注数据访问的底层细节。Ibatis通过XML或注解的方式配置和映射SQL,从而...

    ibatis应对批量update

    为了解决这个问题,ibatis(现已更名为MyBatis)提供了一种支持批量更新的机制,能够显著提高数据处理的速度。 #### 批量Update背景与问题 在实际应用中,经常会遇到需要批量更新数据库中的数据的情况,例如:商品...

    ibatis_动态查询条件

    在动态查询条件中,iBatis 提供了多种判断参数的方法,例如 `isNotNull`、`isNotEmpty`、`isGreaterThan` 等,这些方法可以根据参数的值来生成不同的 SQL 语句。 下面是一个简单的示例,演示如何使用 iBatis 的动态...

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    在动态 SQL 语句中,我们可以使用 `<isNotNull>`、`<isGreaterThan>`、`<isLessThan>` 等元素来构建条件语句,这些元素可以根据参数的值动态地生成 SQL 语句。 三、大于、小于、等于 iBatis 中提供了多种方式来...

    iBATIS动态标签

    2. `<isNotParameterPresent>`:检查参数对象是否为null。 通过这些标签,开发者可以在iBATIS的SQL映射文件中实现灵活的动态SQL,如示例所示,可以根据`Account`对象的`username`属性是否存在和其值来决定`WHERE`...

    ibatis与存储过程(带输出参数的应用)

    在IT行业中,数据库操作...总结来说,Ibatis支持与存储过程的集成,包括带输出参数的存储过程,这为开发者提供了更多的灵活性和效率。在实际开发中,正确理解和运用这一特性,可以有效地优化数据库操作,提升应用性能。

    ibatis常用sql语句

    在iBATIS中,当输入参数为单个值时,如示例中的`long`类型,可以使用`<delete>`标签结合`#value#`占位符来构建SQL语句。这里的`#value#`会被实际的参数值替换,从而执行具体的数据库删除操作。这种简单的参数绑定...

    ibatis总结 ibatis ibatis ibatis ibatis

    在Ibatis中,参数可以通过`#`或`$`符号传递。例如,`select * from PRODUCT where PRD_CAT_ID = #{value}`中的`#{value}`是预编译参数,能有效防止SQL注入。 总结,Ibatis提供了灵活的SQL映射机制,使得开发人员...

    ibatis的dynamicSQL中,关于prepend的使用

    当使用`<dynamic>`标签时,可以将一系列条件组合起来,根据参数的不同值来决定是否加入到最终的SQL语句中。例如,在给定的部分内容中,可以看到`<dynamic prepend="where">`这样的用法,这里的关键在于`prepend`属性...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    iBatis的配置文件SqlMapConfig.xml是系统启动时加载的关键,它包含了数据源(DataSource)、事务管理器(TransactionManager)和SqlMap配置信息。解析这个XML文件的过程涉及到DOM或SAX解析器,源码中这部分功能通常...

    Ibatis

    2.3 参数绑定:调用 SqlSession 的方法时,传入参数对象或 Map,Ibatis 会自动将参数映射到 SQL 语句中。 2.4 结果处理:查询操作返回的结果会被自动映射到 Java 对象,更新操作返回受影响的行数。 **3. 动态 SQL*...

    ibatis api,ibatis文档,ibatis说明文档

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,将数据库操作与业务逻辑解耦,使得开发者可以更专注于业务逻辑的实现,而无需关心繁琐的SQL语句编写。本篇文章将深入探讨Ibatis API、文档...

    ibatis开发过程取值问题

    例如,如果你在SQL语句中使用“#{table_name}”,Ibatis会尝试将这个占位符替换为实际的参数值,而使用“##{table_name}”则会将其作为一个完整的字符串保留下来,不会进行替换。 在实际的开发中,我们常常遇到如下...

Global site tag (gtag.js) - Google Analytics