`

ibatis报列名无效的一个异常分析

 
阅读更多

Caused by: org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; 列名无效; nested exception is java.sql.SQLException: 列名无效
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
	at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212)
	at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249)
	at com.asc.alibaba.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:65)
	at com.asc.alibaba.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:47)
	at com.asc.alibaba.orm.ibatis.AbstractDaoRouter.query(AbstractDaoRouter.java:66)
	at com.asc.alibaba.orm.ibatis.AbstractDaoRouter.query(AbstractDaoRouter.java:175)
	at com.alibaba.click.service.app.impl.AppServiceImpl.getUserApps(AppServiceImpl.java:52)
	at com.alibaba.click.web.module.screen.app.AppList.execute(AppList.java:38)
	at com.alibaba.click.web.module.screen.app.AppList$$FastClassByCGLIB$$be3cb533.invoke(<generated>)
	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at com.alibaba.citrus.service.moduleloader.impl.adapter.MethodInvoker.invoke(MethodInvoker.java:72)
	at com.alibaba.citrus.service.moduleloader.impl.adapter.DataBindingAdapter.execute(DataBindingAdapter.java:37)
	at com.alibaba.citrus.turbine.pipeline.valve.PerformScreenValve.performScreenModule(PerformScreenValve.java:100)
	... 48 more
Caused by: java.sql.SQLException: 列名无效
	at com.asc.alibaba.dao.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:234)
	at com.asc.alibaba.dao.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:42)
	at com.asc.alibaba.orm.ibatis.SqlMapClientTemplate$2.doInSqlMapClient(SqlMapClientTemplate.java:70)
	at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)

 

ibatis的配置:

 

  <resultMap id="App_ResultMap" class="com.alibaba.click.bean.App" >
    <result column="ID" property="id" jdbcType="INTEGER" />
    <result column="APPNAME" property="appname" jdbcType="VARCHAR" />
    <result column="USER_ID" property="userId" jdbcType="INTEGER" />
    <result column="STATUS" property="status" jdbcType="CHAR" />
    <result column="OWNER" property="owner" jdbcType="VARCHAR" />
    <result column="SYNC_TYPE" property="syncType" jdbcType="VARCHAR" />
    <result column="CREATE_TIME" property="createTime" />
    <result column="MODIFY_TIME" property="modifyTime" />
    <result column="LAST_SYNC_TIME" property="lastSyncTime" />
    <result column="USERNAME" property="userName" jdbcType="VARCHAR" />
    <result column="DW_CLICK_URL" property="dwClickUrl"  jdbcType="VARCHAR"/>
    <result column="DW_EXPOSURE_URL" property="dwExposureUrl" jdbcType="VARCHAR" />
  </resultMap>
  
  <!-- 查询 -->
  <select id="query" resultMap="App_ResultMap" parameterClass="java.util.Map" >
    select CK_APP.ID, CK_APP.APPNAME, CK_APP.USER_ID, CK_APP.STATUS, CK_APP.OWNER,
    	   CK_APP.CREATE_TIME, CK_APP.MODIFY_TIME, CK_APP.LAST_SYNC_TIME,
    	   wpf_user.USERNAME,CK_APP.DW_CLICK_URL,CK_APP.DW_EXPOSURE_URL
    from 
    	CK_APP, wpf_user
    where
    	<!--  wpf_user.USER_ID=#userId# AND -->
    	CK_APP.STATUS != '0' AND
    	CK_APP.USER_ID = wpf_user.USER_ID <!-- AND
    	CK_APP.ID in
    	<iterate open="(" close=")" conjunction="," property="appIdList">  
            #appIdList[]#
        </iterate>  -->
  </select>
 

 

这里query的select语句查询出来的少了一个resultmap的一个字段 <result column="SYNC_TYPE" property="syncType" jdbcType="VARCHAR" />,所以报列名无效,

 

在下面的两个类里面会对查询结果根据resultmap反射到对应的bean里进行处理,可以查看对应的源码进行深入了解:

 


 


  • 大小: 335.3 KB
  • 大小: 376.3 KB
分享到:
评论

相关推荐

    ibatis教程_插入一个实体对象.rar

    在本教程中,我们将深入探讨如何使用iBATIS框架来插入一个实体对象。iBATIS是一个优秀的持久层框架,它允许开发人员将SQL语句直接嵌入Java代码中,简化了数据库操作。以下是对这个主题的详细讲解: 一、iBATIS简介 ...

    iBatis开发指南和一个iBatis实例

    iBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架,将SQL语句与Java代码分离,使得数据库访问更为灵活和可控。在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入...

    ibatis 自己学的一个ibatis项目(只是打通了Oracle) 非常适合入门

    自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...

    ibatis 第一个程序

    标题 "iBatis 第一个程序" 暗示我们将探讨如何使用 iBatis,这是一个流行的持久层框架,用于简化 Java 应用程序中的数据库操作。iBatis 提供了一种方式,将 SQL 查询与应用程序代码分离,使得开发更加灵活且易于维护...

    第一个ibatis例子

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的繁琐细节。这个"第一个ibatis例子"是一个典型的入门教程,旨在帮助初学...

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

    iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)框架中独树一帜。iBatis的核心在于它的SQL映射机制,它将数据库操作与业务逻辑解耦,使得开发者可以自由地编写SQL...

    iBatis一个小项目

    iBatis是一个轻量级的Java持久层框架,它的核心理念是将SQL语句与Java代码分离,使得开发者可以更加灵活地控制SQL的执行。在本项目中,我们将深入探讨iBatis的基本概念、配置、映射文件以及如何在实际应用中使用它。...

    ibatis的一个简单demo用户登录

    【标题】"ibatis的一个简单demo用户登录"指的是使用iBATIS这个轻量级的Java持久层框架实现的一个用户登录功能的示例项目。iBATIS是SQL Maps的升级版,它提供了一种将SQL语句与Java代码分离的方式,使得数据库访问...

    Ibatis(中文文档,还有一个调好的例子)

    iBatis是一个O/R Mapping解决方案, iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解决方案。下面我们看一个最简单的入门例子,是《ibatis 开发...

    Ibatis一对一映射提示

    本篇将深入讲解iBATIS一对一映射的概念、配置及应用,帮助你更好地理解和运用这个功能。 一对一映射在数据库设计中是指两个表之间存在一对一的关系,例如,一个员工可能只有一个部门,一个部门也只对应一个员工。在...

    第一个ibatis3工程

    《第一个iBatis3工程详解》 在Java开发领域,iBatis作为一个优秀的持久层框架,因其简单易用、灵活性高而备受青睐。本篇文章将深入探讨如何搭建第一个iBatis3工程,以及该工程中涉及到的核心概念和技术点。 首先,...

    ibatis官方资料及所需要的Jar包

    此外,Ibatis还支持MyBatis Generator,这是一个自动生成Mapper接口、XML配置文件和DAO实现类的工具,可以极大地减轻开发者的编码负担。同时,Ibatis与Spring框架的整合也是常见的应用场景,两者结合可以实现更高效...

    ibatis配置多表关联(一对一、一对多、多对多

    ibatis配置多表关联(一对一、一对多、多对多

    ibatis api 帮助文档+IBATIS 开发文档

    IBATIS,一个由iBATIS公司开发的开源持久层框架,是Java世界中广泛使用的数据访问接口(DAO)工具。它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java代码的分离,提高了开发效率和数据库移植性。本篇将...

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis的错误总结

    如果查询返回的是一个包含多个字段的结果集,而不仅仅是单个`Long`值,则`resultClass`应该更改为能够容纳所有这些字段的Java类,或者使用`resultMap`属性来定义复杂的结果映射。 ### 总结 ibatis在处理SQL语句时...

    ibatis基本操作数据库

    iBatis,全称为MyBatis iBatis,是一个基于Java的持久层框架,它简化了数据库与应用程序之间的交互,避免了直接编写大量的SQL语句和手动处理结果集。在这个过程中,iBatis提供了一个SQL映射框架,允许开发者将SQL...

    ibatis demo,ibatis例子,ibatis示例

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

    struts+spring+ibatis做的一个增删改查例子

    **iBATIS** 是一个持久层框架,它将SQL语句与Java代码分离,提供了动态SQL的能力。在Struts+Spring+iBATIS的架构中,iBATIS负责与数据库交互,通过SQL映射文件(sqlmap.xml)定义SQL查询、插入、更新和删除操作。它...

Global site tag (gtag.js) - Google Analytics