当前使用版本(必填,否则不予处理)

com.baomidou mybatis-plus-boot-starter 3.4.2 com.baomidou mybatis-plus-extension 3.4.2 com.baomidou dynamic-datasource-spring-boot-starter 3.1.0

该问题是如何引起的?(确定最新版也有问题再提!!!)

mybatis plus是否支持多数据库类型,我现在同一个项目想支持mysql/clickhouse数据库。
我通过mybatissqlsessionfactory设置读取不同的resource xml文件,我发现只有默认的mysql执行查询可以成功,我执行clickhouse类型数据库一直报错invalid bound statemnt。
以下是我注入SqlSessionFactory配置。

重现步骤(如果有就写完整)

我打断点clickhouseSqlSessionFactory确实注入spring中了。在执行clickhouse查询时,我发现生成的MybatisMapperProxy代理用的SqlSessionFactory是mysql的而不是clickhouse的,这是为什么。

报错信息

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.geely.grms.rms.service.dao.clickhouse.ChartStatisDao.selectDrivingMileage
at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:235)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.(MybatisMapperMethod.java:51)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.lambda$cachedInvoker$0(MybatisMapperProxy.java:111)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at com.baomidou.mybatisplus.core.toolkit.CollectionUtils.computeIfAbsent(CollectionUtils.java:117)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.cachedInvoker(MybatisMapperProxy.java:98)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
at com.sun.proxy.$Proxy202.selectDrivingMileage(Unknown Source)
at com.geely.grms.rms.service.service.ChartStatisService.drivingMileage(ChartStatisService.java:42)
at com.geely.grms.rms.service.controller.ChartStatisController.drivingMileage(ChartStatisController.java:48)
at com.geely.grms.rms.service.controller.ChartStatisController$$FastClassBySpringCGLIB$$66dfc8ab.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:96)
at cn.evun.sweet.framework.core.mvc.validation.ControllerParameterValidationAspect.aroundController(ControllerParameterValidationAspect.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:62)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:47)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)
at com.geely.grms.rms.service.controller.ChartStatisController$$EnhancerBySpringCGLIB$$429c5cd3.drivingMileage()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at cn.evun.sweet.framework.auth.filter.PathMatchingPermissionFilter.doFilterInternal(PathMatchingPermissionFilter.java:103)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.geely.grms.rms.service.security.XSSDefenceFilter.doFilter(XSSDefenceFilter.java:41)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at cn.evun.sweet.framework.core.mvc.filter.HttpRequestCommonFilter.doFilterInternal(HttpRequestCommonFilter.java:70)
at cn.evun.sweet.framework.core.mvc.filter.SweetFilter.doFilter(SweetFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at cn.evun.sweet.framework.core.mvc.filter.HttpRequestFromFilter.doFilterInternal(HttpRequestFromFilter.java:94)
at cn.evun.sweet.framework.core.mvc.filter.SweetFilter.doFilter(SweetFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:171)
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:679)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

原因

扫描mysqlMapper文件时,将clickhouseMapper也扫描到了,所以clickhouse使用的是mysql的SqlSessionFactory

修改前

修改后

解决思路

发现clickhouseMapper Bean代理SqlSessionFactory引入的是mysqlSqlSessionFactory,此时应该可以断定spring创建bean时出现问题。进入spirng  bean创建时观察发现是因为加载resouce资源时,将dao下面包全部加载出来并创建bean。mysql因为是默认配置,所有将dao下面所有的Mapper都设置mysqlSqlSessionFactory。这样就导致在加载clickhouseMapper发现bean已经被实例化则不去加载,故此出现上述现象。所以更改加载dao下包指定到mysql包下(com.geely.grms.rms.service.dao.mysql)),这样就不会加载clickhouse包下 mapper,在创建clickhouseSqlSessionFactory才去加载clickhouse包下 mapper,这样就正常执行。

项目使用mybatis-plus采用mysql/clickhouse多数据库配置,报错Invalid bound statement (not found)相关推荐

  1. mybatis报错 Invalid bound statement (not found)

    mybatis报错 Invalid bound statement (not found) 第一步:查看接口mapper和对应的xml文件的id是否一致 第二步:是由于maven默认加载机制造成 ma ...

  2. 解决Mybatis启动报错: Invalid bound statement (not found)

    一.问题描述 使用mybatis的项目在本地可以正常运行,但当使用maven或Jenkins打包部署到服务器上时出现了绑定错误,异常信息为: org.apache.ibatis.binding.Bin ...

  3. 【转载】MyBatis报错Invalid bound statement (not found)

    转载自: koal的博客 http://www.cnblogs.com/koal/p/5232388.html <!--IDEA需要添加一下内容,否则无法找到mapper --><b ...

  4. Mybatis报错: Invalid bound statement (not found)...

    报错内容如下 Rerun updateInfoByUid() cn.cyjt.shoot.mapper.UserMapperTests updateInfoByUid(cn.cyjt.shoot.ma ...

  5. Springboot项目中报错Invalid bound statement(not found):com.******报错处理

    报错: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.way.springb ...

  6. Mybatis与JPA冲突报BindingException: Invalid bound statement (not found)

    在同时使用Mybatis和JPA时,项目运行过程中会报如下问题: InternalAuthenticationServiceException: org.apache.ibatis.binding.B ...

  7. springboot整合mybatis之Invalid bound statement解决

    项目场景: 最近跟着一些网上项目做了springboot的相关学习,真心觉得方便,快捷,好用,感觉自己学的差不多了,就想着自己完全独立做一个CRUD练练手,本想速战速决,没想到触发了一个隐秘的小坑,在 ...

  8. spring boot 集成Mybatis时 Invalid bound statement (not found)

    spring boot 集成Mybatis时,运行提示 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  9. server 2008 mysql 报错 0xc000007b_docker插件部署项目,volumes报错invalid volume specification...

    关于idea使用docker插件部署项目,volumes报错invalid volume specification 观察volumes那行,没写错的.但是........ 使用docker-comp ...

  10. Maven项目mybatis Invalid bound statement (not found)解决方法

    最近因为工作需要,要学习mybatis框架.在添加好一些依赖之后,通过mybatis进行数据库的crud操作.但是在测试的时候总是报mybatis:Invalid bound statement (n ...

最新文章

  1. app前后台交互php_PHP丨前端网页是怎么跟后台进行数据交互的(实战)
  2. 超图桌面开发VC++ 入门程序
  3. Truebine聚合监控
  4. python哲学内容是_Python哲学(import this)
  5. hdu 1708 (字符串,Fibonacci )
  6. java做网页客户端_如何成为 Java web开发者
  7. mysqluuid去除横岗
  8. 【OCR一】字符识别技术总览(转)
  9. 4.设计包(design package)
  10. iphone开蓝牙wifi上网慢_苹果iphone 7手机连接wifi网速很慢怎么办?
  11. Nielsen:网络广告信任度上升
  12. 用MATLAB仿真AM调制
  13. 一台计算机安装几个操作系统,电脑装3个系统-一台电脑可以安装几个操作系统?...
  14. 温习古文之念奴娇·赤壁怀古
  15. Ubuntu18.04LTS安装Nvidia显卡驱动
  16. 中国天气雷达行业市场供需与战略研究报告
  17. Qt编写物联网管理平台39-报警联动
  18. 神童频现,这到底是人性的扭曲还是?
  19. SwitchHosts:切换hosts的工具
  20. kettle—资源库详解

热门文章

  1. FPGA + labwindows/CVI 2017 串口通信 电子钟
  2. 程设课终章:c++使用socket实现bmp图片的传输
  3. spring-data-elasticsearch 引入es版本适配
  4. AutoCAD中导入图片
  5. chrome 插件--B站自动发弹幕
  6. 全球光伏多晶硅价格上涨 中美贸易纠纷不断
  7. 数据分析——收入下降原因分析
  8. mac 上装windows系统 win10 没声音 耳机也没声音
  9. Android系统启动过程-uBoot+Kernel+Android
  10. 用C++实现小游戏之石头剪刀布