`
whilew
  • 浏览: 22184 次
文章分类
社区版块
存档分类
最新评论

MyBatis中出现Mapped Statements collection does not contain value异常解决方案

 
阅读更多

在使用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通用插件自动生成代码器

    MyBatis通用插件自动生成代码器是一种高效实用的开发工具,主要针对MyBatis框架进行设计,旨在简化开发过程中的代码编写工作。通过这款插件,开发者可以快速地生成与数据库表对应的实体类(Entity)、接口(Mapper)...

    mybatis 报空值异常

    除了上述情况外,还可能出现其他类型的错误,如 `MappedStatements collection does not contain value for...` 这类异常,通常是由以下几个原因导致的: 1. **Mapper XML 中缺少命名空间** 确保 mapper 文件中...

    mybatis中mapper文件resultMap中collection和association的使用

    mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452

    mybatis 多层级collection嵌套.docx

    在MyBatis中,处理多层级集合嵌套是常见的需求,特别是在映射复杂的数据结构时。这个场景通常出现在一个实体对象包含多个子对象,而这些子对象又可能有自己的子对象,形成一种树状或者网状的数据关系。在提供的文档...

    Mybatis高级-resultMap之collection聚集

    在MyBatis中,`collection`元素主要用于处理一对多的关系映射问题。本文将通过一个具体的示例来详细解释如何利用MyBatis的`collection`元素来实现一对多的数据关联。 #### JAVAVO类设计 首先,我们定义了两个...

    mybatis collection list string

    标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...

    jsq+mybatis+mysql中文乱码解决方案

    JSQ+MyBatis+MySQL 中文乱码解决方案 中文乱码是 JSQ、MyBatis 和 MySQL 集成时常见的问题,解决这个问题需要从多方面入手。本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 ...

    Mybatis中Collection集合标签的使用详解

    "Mybatis中Collection集合标签的使用详解" Mybatis是一款流行的持久层框架,它提供了多种方式来实现数据的持久化操作。在Mybatis中,Collection集合标签是其中一个非常重要的组件,它可以帮助开发者快速实现复杂的...

    mybatis连接MySQL8出现的问题解决方法

    "mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...

    MyBatis3 API 中文文档

    MyBatis是一个开源的持久层框架,它的全称是“MyBatis 3”,它是iBatis的升级版,专注于POJO(Plain Old Java Object,普通Java对象)和数据库之间的映射关系。MyBatis消除了几乎所有的JDBC代码和手动设置参数以及...

    spingmvc+mybatis+统一异常处理机制

    采用springmvc+mybatis,搭建部分大致跟网上其他资料差不多,唯一不同的加入了统一错误处理,为了方便开发人员开发,所有错误码用一张表存在数据库中,然后由应用将整表缓存,缓存采用的spring自带的cache,开发中...

    mybatis_3.5.9官方中文文档pdf

    MyBatis 官方中文文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置...

    MyBatis 中文官方文档

    MyBatis 提供了强大的映射元素,如`&lt;resultMap&gt;`用于定义结果集映射,`&lt;association&gt;`和`&lt;collection&gt;`用于处理复杂对象关系,以及`&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`等结构,实现类似Java的if-else逻辑。...

    Mybatis中collection和association的使用区别详解

    Mybatis 中 Collection 和 Association 的使用区别详解 Mybatis 是一个流行的持久层框架,它提供了多种方式来实现在 Java 应用程序中与数据库交互。在 Mybatis 中,Collection 和 Association 是两个重要的概念,...

    mybatis的中文api文档

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...

    mybatis中文离线文档

    10. **错误和异常**:文档中会列出常见的错误和异常,以及解决方案,帮助开发者诊断和解决问题。 这个离线文档对于MyBatis初学者和进阶者都非常有帮助,不仅覆盖了基本的使用方法,还深入到了高级特性和最佳实践。...

    MyBatis3官方中文文档

    MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...

    mybatis-spring中文文档

    此外,该类库支持将MyBatis数据映射器和SqlSession注入到业务层的bean中,处理事务,并将MyBatis的异常转换为Spring的DataAccessException异常。 在MyBatis-Spring的开发背景中,由于Spring 3.0仅仅支持iBatis2版本...

    mybatis生成中文注释

    1. **MyBatis配置**:首先,我们需要在MyBatis的全局配置文件(`mybatis-config.xml`)中进行相关设置,确保MyBatis支持中文注释。可以通过开启`mapUnderscoreToCamelCase`属性,使MyBatis自动将下划线命名转换为驼峰...

Global site tag (gtag.js) - Google Analytics