当前位置: 首页 > 知识库问答 >
问题:

MyBatis-Mapped Statements集合已包含

申屠浩歌
2023-03-14

在服务器启动时注册映射器类时抛出了以下错误消息,

[artifact:mvn] 2016-05-07 11:39:21,708 [ERROR] org.mybatis.spring.mapper.MapperFactoryBean - Error while adding the mapper 'interface com.sample.mappers.UserMapper' to configuration.
[artifact:mvn] java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.sample.mappers.UserMapper.getAllUsers
[artifact:mvn]  at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:802)
[artifact:mvn]  at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:774)
[artifact:mvn]  at org.apache.ibatis.session.Configuration.addMappedStatement(Configuration.java:598)
[artifact:mvn]  at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:300)
[artifact:mvn]  at org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parseStatement(MapperAnnotationBuilder.java:313)
[artifact:mvn]  at org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parse(MapperAnnotationBuilder.java:128)
[artifact:mvn]  at org.apache.ibatis.binding.MapperRegistry.addMapper(MapperRegistry.java:72)
[artifact:mvn]  at org.apache.ibatis.session.Configuration.addMapper(Configuration.java:671)
[artifact:mvn]  at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:81)
[artifact:mvn]  at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)

下面是我的UserMapper接口,

public interface UserMapper {

  @Select("SELECT  * FROM customer")
  List<User> getAllUsers();

  @Select("SELECT * FROM customer where userId = #{userId} ")
  List<User> getAllUsers(Long userId);

}

共有1个答案

柯国安
2023-03-14

我找出了错误消息的原因。如果具有相同的方法名称,则mybatis抛出映射语句集合已经包含值错误消息。因此,解决方案是对不同的映射器语句使用不同的方法名,即使方法签名不同。

因此,在我的映射器接口中,方法名称secondgetAllUsers()name应该是getUserById();。如果在任何mapper.xml文件中有相同的方法名,则会引发相同的错误。因此,必须为不同的sql语句提供唯一的方法名或映射器命名空间,以便mybatis在运行时对其进行映射。

 类似资料:
  • 我使用了Oracle过程的out参数。out参数仅返回一个对象,该对象具有Oracle类型的嵌套对象。out pareemter应该是java bean TestEntity的精确映射,但mybatis说结果不包含TestEntity 请帮忙 Java bean: org.mybatis.spring.mybatisSystemException:嵌套异常为org.apache.ibatis.ex

  • 本文向大家介绍Mybatis 中如何判断集合的size,包括了Mybatis 中如何判断集合的size的使用技巧和注意事项,需要的朋友参考一下 Mybatis中判断集合的size,可以用下面的方法来做。 补充:警惕,MyBatis的size()方法竟然有坑! Mybatis是一个开源的轻量级半自动化ORM框架,使得面向对象应用程序与关系数据库的映射变得更加容易。 MyBatis使用xml描述符或注

  • 问题内容: 我有POJO类: 然后,我创建一张票证和一些地方: 现在,我想将其保存到数据库: 在MapperConfig.xml中,我这样写: 如何以自动模式保存 列表位置 ?MyBatis可以为我保存吗?还是我需要使用 foreach 手动进行迭代,然后手动插入每个 地方 ? 谢谢你的帮助。 问题答案: 即使MyBatis能够支持相反的方向(即在查询过程中使用嵌套选择或联接填充列表),也没有自动

  • 我有一个集合,其中每个文档都有一些公共数据,如用户名和字符级别,但也有一个私有子集合,它有字符的黄金量。 现在我可以查询特定文档的characters collection,但是子collection数据不会返回,所以我需要执行二次查询来检索它。

  • 网上可能找不到的集合框架(暂时只有区间树的一个扩展) 给定区间范围[1,5],[1,6],[2,10],[6,10],[4,19],[5,20],返回关键值“10”的所有区间范围[2,10],[6,10],[4,19],[5,20]。 红黑树部分使用JDK自带的TreeMap,在此之上进行扩展。 声明:OSCHINA 博客文章版权属于作者,受法律保护。未经作者同意不得转载。 注意:下载时需要SVN客户端!

  • Spring + Mybatis 整合 本章节主要是介绍如何使用Spring + Mybatis 框架整合构建项目。 Spring-mybatis整合官方文档地址 http://www.mybatis.org/spring/zh/ 本教程的代码已经存放在code.aliyun.com上面 . 可以clone到本地 . 项目地址 : https://code.aliyun.com/lemypyl/s