关于mybatis通用BaseMapper的问题

国际体育365 📅 2025-07-12 10:40:03 👤 admin 👁️ 7638 ❤️ 771
关于mybatis通用BaseMapper的问题

社区

Java EE 帖子详情 关于mybatis通用BaseMapper的问题 PeaceLoop 2015-05-18 04:54:54 BaseMapper是我自定义的一个接口,定义了基本CRUD方法,供其他Mapper接口继承。

问题是如果有一个以上的Mapper继承时,就会报错。

expected single matching bean but found 2

这个问题大家都知道 注解继承冲突 两个bean父类相同注入时就会报这错 需要指定value

但问题是mybatis的mapper是没有实现类的

好像配置有哪里不对

谁知道咋办?

...全文

28434 20 打赏 收藏 关于mybatis通用BaseMapper的问题 BaseMapper是我自定义的一个接口,定义了基本CRUD方法,供其他Mapper接口继承。 问题是如果有一个以上的Mapper继承时,就会报错。 expected single matching bean but found 2 这个问题大家都知道 注解继承冲突 两个bean父类相同注入时就会报这错 需要指定value 但问题是mybatis的mapper是没有实现类的 好像配置有哪里不对 谁知道咋办? 复制链接

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 20 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 璞玉Hope 2019-05-23 打赏举报 回复 楼主,baseMapper对应的xml文件怎么呢? qq_39535310 2018-06-26 打赏举报 回复 才了解接触这个点 达兔哥 2017-08-16 打赏举报 回复 解决了吗?我的跟你一样,不是没有扫描包的问题 小刺风 2017-04-06 打赏举报 回复 你需要做的事在公用service中把你的公用mapper设置为抽象的,抽象的实体就不会被spring给加载了。

public abstract class BaseServiceImpl implements BaseService {

public abstract BaseMapper getBaseMapper();

} 小刺风 2017-04-06 打赏举报 回复 哥们他们都不对 sinat_28583841 2017-03-09 打赏举报 回复 解决方案在这里!BaseServiceImpl 改成abstract。 yanyongboy 2016-07-12 打赏举报 回复 这个问题我也约到了,虽然问题过去已久,但希望我的回答能帮到以后遇到同样问题的人:

public abstract class BaseService implements IBaseService {

@Resource //----此处会出现歧义,导致报错

private BaseMapper baseMapper;

加入:public void setBaseMapper(BaseMapper baseMapper) {

this.baseMapper= baseMapper;

}

改成在BaseService的实现类中注入mapper

如:public class MenuService

extends BaseService

implements MenuService

@Resource

private MenuMapper

menuMapper;

@Autowired

public void setMenuMapper(){

super. setBaseMapper(menuMapper);

}

PeaceLoop 2015-05-20 打赏举报 回复 是忘了扫描basemapper所在包了 包名不一样 PeaceLoop 2015-05-18 打赏举报 回复 求大神啊 整了一天没整好 要通宵了 PeaceLoop 2015-05-18 打赏举报 回复 哎 这样也一样

引用 10 楼 u013761410 的回复:我是这样配置的

songjy3 2015-05-18 打赏举报 回复 我是这样配置的

PeaceLoop 2015-05-18 打赏举报 回复 后台信息

Caused by:

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.sinosig.ygcf.framework.persistence.BaseMapper] is defined: expected single matching bean but found 2: salaryMapper,userMapper

at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:870)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:775)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489)

at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:633)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)

at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)

at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:782)

at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)

at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:774)

at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)

at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)

at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)

at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)

at org.mortbay.jetty.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:298)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)

at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)

at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)

at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)

at org.eclipse.jetty.server.Server.doStart(Server.java:282)

at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)

at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:520)

at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:365)

at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:523)

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)

at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)

at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)

at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)

at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)

at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)

at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)

at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)

at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)

at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)

at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

2015-05-18 18:01:20.841:WARN:oejsh.RequestLogHandler:!RequestLog

2015-05-18 18:01:20.865:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

[INFO] Started Jetty Server PeaceLoop 2015-05-18 打赏举报 回复 引用 4 楼 u013761410 的回复:配置文件怎么写的?

配置文件在楼上 PeaceLoop 2015-05-18 打赏举报 回复 引用 5 楼 shijing266 的回复:按道理接口是可以被多个接口继承的,出现expected single matching bean but found 2 说明父类被注解了两次

其实我以前搭过一遍mybatis的框架

最近借着struts2换springmvc的关系 我又重新搭了一遍并做了一些地方的优化

配置文件貌似也没啥问题

我把整个配置文件放在以前的项目里也不报错

实在不知道咋整

其实我以前也遇到过这个问题 那时候试了好多种方法 最后不知道怎么的莫名其妙就好了。。。

配置文件如下

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"

lazy-init="true">

classpath:config/jdbc.properties

destroy-method="close">

value="com.sinosig.ygcf.demo.domain,com.sinosig.ygcf.framework.domain" />

classpath:com/sinosig/ygcf/demo/persistence/*Mapper.xml

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

expression="execution(* com.sinosig.ygcf.demo.service..*.*(..))" />

advice-ref="transactionAdvice" />

class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">

DisableCircularReferenceDetect

class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">

value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect">

class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />

class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

/WEB-INF/views/

utf-8

0

songjy3 2015-05-18 打赏举报 回复 我写的接口继承没问题啊 执笔记忆的空白 2015-05-18 打赏举报 回复 按道理接口是可以被多个接口继承的,出现expected single matching bean but found 2 说明父类被注解了两次 songjy3 2015-05-18 打赏举报 回复 配置文件怎么写的? PeaceLoop 2015-05-18 打赏举报 回复 引用 1 楼 shijing266 的回复:你两个子类实现了同一个接口,然后都用@Autowired去注解,是这个意思吧?

http://blog.csdn.net/moneyshi/article/details/38875083

我没写类,只写了三个接口。就会出现这种问题。mybatis不需要写类。 PeaceLoop 2015-05-18 打赏举报 回复 具体代码

public interface BaseMapper {

/**

* 根据实体非空字段条件进行查询

*

* @param t

* @return

*/

public List select(T t);

//略

}

public interface UserMapper extends BaseMapper {

}

只要再多写一个XxxMapper就会报错 执笔记忆的空白 2015-05-18 打赏举报 回复 你两个子类实现了同一个接口,然后都用@Autowired去注解,是这个意思吧?

http://blog.csdn.net/moneyshi/article/details/38875083 Mybatis通用DAO设计封装(mybatis) NULL

博文链接:https://zhaoshijie.iteye.com/blog/2003209 Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x NULL

博文链接:https://fanshuyao.iteye.com/blog/2413143 mybatis通用mapper 这个工具类封装了mybatis通用的mapper和通用的service Spring boot集成Mybatis通用mapper 这是我写的一个Spring boot集成Mybatis通用mapper并连接MySQL数据库实现增删改查的一个小例子 Spring集成MyBatis 通用Mapper以及 pagehelper分页插件 Spring集成MyBatis 通用Mapper以及 pagehelper分页插件

Java EE

67,549

社区成员

225,860

社区内容

发帖 与我相关 我的任务 Java EE J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。 复制链接

扫一扫 分享 确定 社区描述 J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章

相关养生推荐

【ae插件particular】ae粒子插件particular安装包及教程
beat365手机下载

【ae插件particular】ae粒子插件particular安装包及教程

📅 07-07 👁️ 6254
修改WiFi密码后怎么重新连接无线网络
国际体育365

修改WiFi密码后怎么重新连接无线网络

📅 07-12 👁️ 9253
迅雷7官方下载
国际体育365

迅雷7官方下载

📅 07-08 👁️ 3951
互联网销售是做什么的?
365bet体育官网平台

互联网销售是做什么的?

📅 07-09 👁️ 3937
“知道了”韩语怎么说
beat365手机下载

“知道了”韩语怎么说

📅 07-08 👁️ 5085
手杆如何绑线?
beat365手机下载

手杆如何绑线?

📅 07-12 👁️ 5445