`
san_yun
  • 浏览: 2662868 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

ibatis一个很不灵活的地方

 
阅读更多

最近一直都不爽ibtais,用起来一点都不敏捷。今天发现一处非常不灵活的地方。比如一个DO我有两条SQL,其中一条SQL比另外一条SQL多一个last_like_datetime。我想共用一个resultMap居然会报错:

 

	   <resultMap id="RM-ALBUM" class="TA-ALBUM">
        	<result property="id" 				column="id"/>
        	<result property="gmtCreate" 		column="create_datetime"/>
        	<result property="lastLikeDatetime" 		column="last_like_datetime"/>
       </resultMap>

 

 

 

Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/duitang/model/mysql/blog/AlbumDO.xml.  
--- The error occurred while applying a result map.  
--- Check the AlbumDO.RM-ALBUM.  
--- Check the result mapping for the 'lastLikeDatetime' property.  
--- Cause: java.sql.SQLException: Column 'last_like_datetime' not found.
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForObject(MappedStatement.java:120)
	at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:518)
	at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:493)
	at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
	at org.springframework.orm.ibatis.SqlMapClientTemplate$1.doInSqlMapClient(SqlMapClientTemplate.java:270)
	at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
	... 32 more
Caused by: java.sql.SQLException: Column 'last_like_datetime' not found.
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
	at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1166)
	at com.mysql.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:6229)
	at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
	at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
	at com.ibatis.sqlmap.engine.type.DateTypeHandler.getResult(DateTypeHandler.java:38)
	at com.ibatis.sqlmap.engine.mapping.result.ResultMap.getPrimitiveResultMappingValue(ResultMap.java:619)
	at com.ibatis.sqlmap.engine.mapping.result.ResultMap.getResults(ResultMap.java:345)
	at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:384)
	at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExecutor.java:300)
	at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:189)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)
	... 38 more

 原来这SB只要发现resultMap有定义字段就会直接调用rs.getResult('column_name')。

 

分享到:
评论
1 楼 7先生 2013-12-18  
今天也刚好遇到这个问题,可以通过如下设置解决:

设置 select 添加属性 remapResults="false",

可参见这篇文章:http://sinokaka.iteye.com/blog/39367

相关推荐

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

    Ibatis官方资料大全提供了全面的学习资源,包括ibatis-common.jar、ibatis-Dao.jar和ibatis-sqlmap.jar等核心组件的详细讲解和相关jar文件,是学习和使用Ibatis不可或缺的参考资料。 首先,我们来了解一下ibatis-...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页

    公司的大部分项目都开始使用IBatis作为O/R Mapping了,但是在使用的过程中也发现了很多不方便和存在争议的地方,其中一个不方便的地方就是分页,目前的处理方式都是在sqlMap中写针对特定数据库的物理分页Sql语句,对于...

    我今天写的ibatis的一个Simple

    【标题】:“我今天写的ibatis的一个Simple” 【描述】:“我今天写的ibatis的一个Simple”这段描述简短地提到了作者今天完成的一个关于iBatis的简单示例。iBatis是一个开源的Java框架,它允许开发者将SQL语句直接...

    [iBATIS]sql转换工具

    总的来说,"[iBATIS]sql转换工具"是一个非常实用的开发辅助工具,它可以极大地方便开发者在不同数据库之间迁移SQL,提升开发效率,同时保持代码的整洁和一致性。对于采用iBATIS作为数据访问层的项目,这个工具无疑是...

    简单的ibatis与mysql的交互

    Ibatis作为一个轻量级的持久层框架,提供了SQL映射文件和Java接口的结合,使得开发者能够更方便地操作数据库。本教程将围绕“简单的ibatis与mysql的交互”这一主题展开,帮助初学者理解如何在Eclipse环境下使用...

    ibatis配置

    Ibatis,全名MyBatis,是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在Ibatis中,SQL语句的编写与Java代码完全分离,使得开发者可以更好地专注于SQL的编写,同时避免了JDBC代码的繁琐。...

    spring与ibatis整合集成实例

    而 iBATIS 是一个持久层框架,它简化了数据库操作,将 SQL 语句与 Java 代码分离,提供了灵活的数据访问接口。 在整合 Spring 和 iBATIS 进行项目开发时,主要涉及以下几个关键知识点: 1. **依赖注入 (Dependency...

    sqlserver Ibatis XML自动生成工具

    然而,尽管Ibatis提供了灵活性,但为每个表创建对应的XML映射文件仍然是一个耗时的任务。这就是SQLServer Ibatis XML自动生成工具发挥作用的地方。 首先,我们需要了解如何配置这个工具。下载安装完成后,你需要在...

    spring-ibatis-ext-plugin.1.0.0 扩展ibaits原生SQL

    本文讲述的就是如何在不重新编译ibatis源码的前提下,为ibatis引入hibernate式的物理分页机制。 基本思路就是找到ibatis执行sql的地方,截获sql并重新组装sql。通过分析ibatis源码知道,最终负责执行sql的类是 ...

    ibatis.net的asp.net MVC的实例

    当我们需要在控制器或其他依赖于特定服务的地方注入ibatis.net的数据库访问对象时,Unity可以帮助我们完成这一过程,使得代码更加灵活和可扩展。 【知识点详解】 1. **ASP.NET MVC**:ASP.NET MVC是一种基于模型-...

    简单Ibatis例子,可以运行

    Ibatis是一个轻量级的Java持久层框架,它与Hibernate和MyBatis3等ORM(对象关系映射)工具相比,更加灵活,更注重SQL的编写。本示例旨在提供一个简单的Ibatis运行实例,帮助开发者理解其基本用法。 在开始之前,...

    ibatis源码

    在软件开发领域,iBatis作为一款优秀的数据访问层框架,以其轻量级、灵活易用的特点,深受开发者喜爱。本篇文章将深入探讨iBatis的源码,结合junit测试和SQL Server数据库的运用,帮助读者更好地理解和应用这一框架...

    java ibatis main测试

    Java 是一种多用途的、面向对象的编程语言,而 iBatis 是一个优秀的持久层框架,它允许开发者将 SQL 查询与 Java 代码分离,提供了更灵活的数据库访问方式。 在Java中,`main` 方法是程序的入口点,任何Java应用...

    ibatis_spring源代码

    当我们谈到`iBatis` 和 `Spring` 的整合时,意味着我们可以利用两者的优点,构建一个高效、灵活且易于维护的系统。 整合`iBatis` 和 `Spring` 主要涉及以下几个关键知识点: 1. **数据源配置**:在整合过程中,...

    ibatis用xml配置文件配置使用

    在IT行业中,iBATIS(现为MyBatis)是一个非常流行的数据访问框架,它将SQL语句与Java代码分离,使得数据库操作更加简洁、灵活。本篇文章将深入探讨如何使用XML配置文件来配置iBATIS,以解决你在实际开发中可能遇到...

    ibatis 中sqlMap配置

    命名空间是iBatis配置中的一个重要概念,它用于区分不同的SQL映射文件。例如,`&lt;sqlMap namespace="Account"&gt;`,在这个命名空间内定义的所有SQL语句和其他元素都属于Account模块。如果要在其他地方引用这个命名空间...

    spring+struts2+ibatis简单例子

    通过这样的整合,我们可以构建出一个灵活、可扩展的Java Web应用程序,它具备良好的分层结构,降低了各层之间的耦合度,提高了代码的可维护性和可测试性。在实际项目中,这种架构模式经常被采用,因为它既兼顾了开发...

    ibatis-core-3.0.jar.zip

    iBatis,一个优秀的持久层框架,以其轻量级、易用性、灵活性等特性深受开发者喜爱。在Java开发领域,iBatis作为数据访问层的解决方案,为数据库操作提供了强大的支持。而`ibatis-core-3.0.jar`则是iBatis框架的核心...

    Eclipse Spring3.x集成ibatis2.x开发案例

    这个主题涵盖了Java企业级开发中的两个重要框架,Spring作为依赖注入(DI)和面向切面编程(AOP)的容器,而iBatis则是一个持久层框架,简化了数据库操作。下面将深入讲解这两个框架的集成过程以及相关的知识点。 1...

    iBatis_SqlMap的配置总结[1]

    iBatis是一个轻量级的持久层框架,它允许开发者将SQL语句与Java代码分离,从而提高了开发效率和可维护性。SqlMap是iBatis的核心配置文件,用于定义数据库交互的各种操作。以下是关于iBatis_SqlMap配置的一些关键知识...

Global site tag (gtag.js) - Google Analytics