最近一直都不爽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')。
相关推荐
Ibatis官方资料大全提供了全面的学习资源,包括ibatis-common.jar、ibatis-Dao.jar和ibatis-sqlmap.jar等核心组件的详细讲解和相关jar文件,是学习和使用Ibatis不可或缺的参考资料。 首先,我们来了解一下ibatis-...
公司的大部分项目都开始使用IBatis作为O/R Mapping了,但是在使用的过程中也发现了很多不方便和存在争议的地方,其中一个不方便的地方就是分页,目前的处理方式都是在sqlMap中写针对特定数据库的物理分页Sql语句,对于...
【标题】:“我今天写的ibatis的一个Simple” 【描述】:“我今天写的ibatis的一个Simple”这段描述简短地提到了作者今天完成的一个关于iBatis的简单示例。iBatis是一个开源的Java框架,它允许开发者将SQL语句直接...
总的来说,"[iBATIS]sql转换工具"是一个非常实用的开发辅助工具,它可以极大地方便开发者在不同数据库之间迁移SQL,提升开发效率,同时保持代码的整洁和一致性。对于采用iBATIS作为数据访问层的项目,这个工具无疑是...
Ibatis作为一个轻量级的持久层框架,提供了SQL映射文件和Java接口的结合,使得开发者能够更方便地操作数据库。本教程将围绕“简单的ibatis与mysql的交互”这一主题展开,帮助初学者理解如何在Eclipse环境下使用...
Ibatis,全名MyBatis,是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在Ibatis中,SQL语句的编写与Java代码完全分离,使得开发者可以更好地专注于SQL的编写,同时避免了JDBC代码的繁琐。...
而 iBATIS 是一个持久层框架,它简化了数据库操作,将 SQL 语句与 Java 代码分离,提供了灵活的数据访问接口。 在整合 Spring 和 iBATIS 进行项目开发时,主要涉及以下几个关键知识点: 1. **依赖注入 (Dependency...
然而,尽管Ibatis提供了灵活性,但为每个表创建对应的XML映射文件仍然是一个耗时的任务。这就是SQLServer Ibatis XML自动生成工具发挥作用的地方。 首先,我们需要了解如何配置这个工具。下载安装完成后,你需要在...
本文讲述的就是如何在不重新编译ibatis源码的前提下,为ibatis引入hibernate式的物理分页机制。 基本思路就是找到ibatis执行sql的地方,截获sql并重新组装sql。通过分析ibatis源码知道,最终负责执行sql的类是 ...
当我们需要在控制器或其他依赖于特定服务的地方注入ibatis.net的数据库访问对象时,Unity可以帮助我们完成这一过程,使得代码更加灵活和可扩展。 【知识点详解】 1. **ASP.NET MVC**:ASP.NET MVC是一种基于模型-...
Ibatis是一个轻量级的Java持久层框架,它与Hibernate和MyBatis3等ORM(对象关系映射)工具相比,更加灵活,更注重SQL的编写。本示例旨在提供一个简单的Ibatis运行实例,帮助开发者理解其基本用法。 在开始之前,...
在软件开发领域,iBatis作为一款优秀的数据访问层框架,以其轻量级、灵活易用的特点,深受开发者喜爱。本篇文章将深入探讨iBatis的源码,结合junit测试和SQL Server数据库的运用,帮助读者更好地理解和应用这一框架...
Java 是一种多用途的、面向对象的编程语言,而 iBatis 是一个优秀的持久层框架,它允许开发者将 SQL 查询与 Java 代码分离,提供了更灵活的数据库访问方式。 在Java中,`main` 方法是程序的入口点,任何Java应用...
当我们谈到`iBatis` 和 `Spring` 的整合时,意味着我们可以利用两者的优点,构建一个高效、灵活且易于维护的系统。 整合`iBatis` 和 `Spring` 主要涉及以下几个关键知识点: 1. **数据源配置**:在整合过程中,...
在IT行业中,iBATIS(现为MyBatis)是一个非常流行的数据访问框架,它将SQL语句与Java代码分离,使得数据库操作更加简洁、灵活。本篇文章将深入探讨如何使用XML配置文件来配置iBATIS,以解决你在实际开发中可能遇到...
命名空间是iBatis配置中的一个重要概念,它用于区分不同的SQL映射文件。例如,`<sqlMap namespace="Account">`,在这个命名空间内定义的所有SQL语句和其他元素都属于Account模块。如果要在其他地方引用这个命名空间...
通过这样的整合,我们可以构建出一个灵活、可扩展的Java Web应用程序,它具备良好的分层结构,降低了各层之间的耦合度,提高了代码的可维护性和可测试性。在实际项目中,这种架构模式经常被采用,因为它既兼顾了开发...
iBatis,一个优秀的持久层框架,以其轻量级、易用性、灵活性等特性深受开发者喜爱。在Java开发领域,iBatis作为数据访问层的解决方案,为数据库操作提供了强大的支持。而`ibatis-core-3.0.jar`则是iBatis框架的核心...
这个主题涵盖了Java企业级开发中的两个重要框架,Spring作为依赖注入(DI)和面向切面编程(AOP)的容器,而iBatis则是一个持久层框架,简化了数据库操作。下面将深入讲解这两个框架的集成过程以及相关的知识点。 1...
iBatis是一个轻量级的持久层框架,它允许开发者将SQL语句与Java代码分离,从而提高了开发效率和可维护性。SqlMap是iBatis的核心配置文件,用于定义数据库交互的各种操作。以下是关于iBatis_SqlMap配置的一些关键知识...