在使用MyBatis实现数据持久层过程中,定义了如下一个<select>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.talkweb.mapper.lead.LeadKPIDataMapper">
<resultMap type="com.talkweb.domains.lead.KPIDataVO" id="res_kpiDataVO">
<result property="tagId" column="TAG_ID"/>
<result property="tagName" column="CAL_NAME"/>
<result property="tagValue" column="TAG_VALUE"/>
<result property="tagl1mValue" column="TAG_L1M_VALUE"/>
<result property="tagl1yValue" column="TAG_L1Y_VALUE"/>
<result property="risL1mRat" column="RIS_L1M_RAT"/>
<result property="risL1yRat" column="RIS_L1Y_RAT"/>
<result property="tagNameTip" column="CAL_BUS_DESC"/>
<result property="date" column="TIME_ID"/>
<result property="areaId" column="AREA_ID"/>
<result property="cntyId" column="CNTY_ID"/>
<result property="townId" column="TOWN_ID"/>
</resultMap>
<select id="findKPIData" resultMap="res_kpiDataVO">
SELECT K.TAG_ID,T.CAL_NAME FROM SHW.RPT_MN_TAG_DFLT_FEE_MM AS K INNER JOIN WI.MN_CAL_LIST_DST AS T
ON K.TAG_ID=T.TAG_ID AND K.TIME_ID=20120515 AND K.CNTY_ID='E398' WITH UR
</select>
</mapper>
对应的接口文件为LeadKPIDataMapper .java:
public interface LeadKPIDataMapper {
public List<KPIDataVO> findKPIData();
}
在测试过程中,系统总是出现如下异常:
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.talkweb.mapper.lead.LeadKPIDataMapper.findKPIData
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:594)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:436)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:428)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:188)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:51)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
经过排查,解决上述异常的过程如下:
1.确定xml文件中<mapper namespace=""/>中的namespace是否路径正确(在此案例中namespace与实际路径一致),由于namespace不同会引发此问题
2.确定xml文件的名称是否与接口类的名称保持一致,在上例中出现问题就是因为不小心将xml文件命名为LendKPIDataMapper.xml,而接口文件为:LeadKPIDataMapper.java。一字之差导致异常的发生。
总结:细心,仔细,认真是程序开发之根本。
分享到:
相关推荐
在使用MyBatis框架进行数据库操作时,可能会遇到“Mapped Statements collection does not contain value for”这样的错误提示。这通常意味着MyBatis无法找到与指定的ID相对应的映射语句。下面将详细解释这个问题的...
MyBatis通用插件自动生成代码器是一种高效实用的开发工具,主要针对MyBatis框架进行设计,旨在简化开发过程中的代码编写工作。通过这款插件,开发者可以快速地生成与数据库表对应的实体类(Entity)、接口(Mapper)...
除了上述情况外,还可能出现其他类型的错误,如 `MappedStatements collection does not contain value for...` 这类异常,通常是由以下几个原因导致的: 1. **Mapper XML 中缺少命名空间** 确保 mapper 文件中...
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
在MyBatis中,处理多层级集合嵌套是常见的需求,特别是在映射复杂的数据结构时。这个场景通常出现在一个实体对象包含多个子对象,而这些子对象又可能有自己的子对象,形成一种树状或者网状的数据关系。在提供的文档...
在MyBatis中,`collection`元素主要用于处理一对多的关系映射问题。本文将通过一个具体的示例来详细解释如何利用MyBatis的`collection`元素来实现一对多的数据关联。 #### JAVAVO类设计 首先,我们定义了两个...
标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...
JSQ+MyBatis+MySQL 中文乱码解决方案 中文乱码是 JSQ、MyBatis 和 MySQL 集成时常见的问题,解决这个问题需要从多方面入手。本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 ...
"Mybatis中Collection集合标签的使用详解" Mybatis是一款流行的持久层框架,它提供了多种方式来实现数据的持久化操作。在Mybatis中,Collection集合标签是其中一个非常重要的组件,它可以帮助开发者快速实现复杂的...
"mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...
MyBatis是一个开源的持久层框架,它的全称是“MyBatis 3”,它是iBatis的升级版,专注于POJO(Plain Old Java Object,普通Java对象)和数据库之间的映射关系。MyBatis消除了几乎所有的JDBC代码和手动设置参数以及...
MyBatis 官方中文文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...
采用springmvc+mybatis,搭建部分大致跟网上其他资料差不多,唯一不同的加入了统一错误处理,为了方便开发人员开发,所有错误码用一张表存在数据库中,然后由应用将整表缓存,缓存采用的spring自带的cache,开发中...
MyBatis 提供了强大的映射元素,如`<resultMap>`用于定义结果集映射,`<association>`和`<collection>`用于处理复杂对象关系,以及`<choose>`, `<when>`, `<otherwise>`等结构,实现类似Java的if-else逻辑。...
Mybatis 中 Collection 和 Association 的使用区别详解 Mybatis 是一个流行的持久层框架,它提供了多种方式来实现在 Java 应用程序中与数据库交互。在 Mybatis 中,Collection 和 Association 是两个重要的概念,...
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...
MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...
10. **错误和异常**:文档中会列出常见的错误和异常,以及解决方案,帮助开发者诊断和解决问题。 这个离线文档对于MyBatis初学者和进阶者都非常有帮助,不仅覆盖了基本的使用方法,还深入到了高级特性和最佳实践。...
在MyBatis中,`association` 和 `collection` 是用于处理一对一和一对多关系的映射元素。在处理这些关系时,我们可能需要根据某些条件筛选关联的数据。本篇文章将详细探讨如何在 `association` 和 `collection` 的 `...
此外,该类库支持将MyBatis数据映射器和SqlSession注入到业务层的bean中,处理事务,并将MyBatis的异常转换为Spring的DataAccessException异常。 在MyBatis-Spring的开发背景中,由于Spring 3.0仅仅支持iBatis2版本...