项目使用mybatis-plus采用mysql/clickhouse多数据库配置,报错Invalid bound statement (not found)
当前使用版本(必填,否则不予处理)
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)相关推荐
- mybatis报错 Invalid bound statement (not found)
mybatis报错 Invalid bound statement (not found) 第一步:查看接口mapper和对应的xml文件的id是否一致 第二步:是由于maven默认加载机制造成 ma ...
- 解决Mybatis启动报错: Invalid bound statement (not found)
一.问题描述 使用mybatis的项目在本地可以正常运行,但当使用maven或Jenkins打包部署到服务器上时出现了绑定错误,异常信息为: org.apache.ibatis.binding.Bin ...
- 【转载】MyBatis报错Invalid bound statement (not found)
转载自: koal的博客 http://www.cnblogs.com/koal/p/5232388.html <!--IDEA需要添加一下内容,否则无法找到mapper --><b ...
- Mybatis报错: Invalid bound statement (not found)...
报错内容如下 Rerun updateInfoByUid() cn.cyjt.shoot.mapper.UserMapperTests updateInfoByUid(cn.cyjt.shoot.ma ...
- Springboot项目中报错Invalid bound statement(not found):com.******报错处理
报错: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.way.springb ...
- Mybatis与JPA冲突报BindingException: Invalid bound statement (not found)
在同时使用Mybatis和JPA时,项目运行过程中会报如下问题: InternalAuthenticationServiceException: org.apache.ibatis.binding.B ...
- springboot整合mybatis之Invalid bound statement解决
项目场景: 最近跟着一些网上项目做了springboot的相关学习,真心觉得方便,快捷,好用,感觉自己学的差不多了,就想着自己完全独立做一个CRUD练练手,本想速战速决,没想到触发了一个隐秘的小坑,在 ...
- spring boot 集成Mybatis时 Invalid bound statement (not found)
spring boot 集成Mybatis时,运行提示 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- server 2008 mysql 报错 0xc000007b_docker插件部署项目,volumes报错invalid volume specification...
关于idea使用docker插件部署项目,volumes报错invalid volume specification 观察volumes那行,没写错的.但是........ 使用docker-comp ...
- Maven项目mybatis Invalid bound statement (not found)解决方法
最近因为工作需要,要学习mybatis框架.在添加好一些依赖之后,通过mybatis进行数据库的crud操作.但是在测试的时候总是报mybatis:Invalid bound statement (n ...
最新文章
- app前后台交互php_PHP丨前端网页是怎么跟后台进行数据交互的(实战)
- 超图桌面开发VC++ 入门程序
- Truebine聚合监控
- python哲学内容是_Python哲学(import this)
- hdu 1708 (字符串,Fibonacci )
- java做网页客户端_如何成为 Java web开发者
- mysqluuid去除横岗
- 【OCR一】字符识别技术总览(转)
- 4.设计包(design package)
- iphone开蓝牙wifi上网慢_苹果iphone 7手机连接wifi网速很慢怎么办?
- Nielsen:网络广告信任度上升
- 用MATLAB仿真AM调制
- 一台计算机安装几个操作系统,电脑装3个系统-一台电脑可以安装几个操作系统?...
- 温习古文之念奴娇·赤壁怀古
- Ubuntu18.04LTS安装Nvidia显卡驱动
- 中国天气雷达行业市场供需与战略研究报告
- Qt编写物联网管理平台39-报警联动
- 神童频现,这到底是人性的扭曲还是?
- SwitchHosts:切换hosts的工具
- kettle—资源库详解