记录springBoot项目使用jar包中的mapper报错问题

  • 背景
    • 双数据源的实现
    • 启动时报找不到对应的service
    • 启动报mapper找不到
    • 启动报no sqlsessionfactory
    • 启动不报错,但是调用到mapper时,报invalid bound statement
    • 全部配置好后,可以正常启动,并且调用能够调用对应数据库

背景

当前项目需要拿取别的项目的数据,没有采用http的方式,而是别的项目将查询的代码打成jar包引入到自己的项目中,在自己的项目中使用时直接注入Service,调用对应方法即可。
但是需要实现双数据源,因为jar包里的方法需要调用别的项目的数据库。

双数据源的实现

网上实现方式很多,我采用的是AOP实现,这里不赘述,参考下面这个链接
https://blog.csdn.net/xiaosheng_papa/article/details/80218006

启动时报找不到对应的service


需要在启动类上加上扫描注解,不然不会扫描jar包里的注解,无法注入,会报错

启动报mapper找不到

虽然jar包中的mapper打了mapper注解,但是还是扫描不到,需要手动增加扫描路径

启动报no sqlsessionfactory

这个是由于没有sqlsessionfactory造成的,需要在注入数据源的类里写两个方法


```java
@Beanpublic SqlSessionFactory sqlSessionFactory() throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dynamicDataSource());//此处设置为了解决找不到mapper文件的问题sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));List<Resource> resources = new ArrayList<>();PathMatchingResourcePatternResolver  resolver =  new PathMatchingResourcePatternResolver();resources.addAll(Arrays.asList(resolver.getResources("classpath*:mapper/**/*.xml")));resources.addAll(Arrays.asList(resolver.getResources("classpath*:mapper/*.xml")));resources.addAll(Arrays.asList(resolver.getResources("classpath*:permission/mapper/*.xml")));sqlSessionFactoryBean.setMapperLocations(resources.toArray(new Resource[0]));return sqlSessionFactoryBean.getObject();}@Beanpublic SqlSessionTemplate sqlSessionTemplate() throws Exception {return new SqlSessionTemplate(sqlSessionFactory());}

启动不报错,但是调用到mapper时,报invalid bound statement

这个是由于mapper.xml没扫描到造成的,有两个办法解决,第一是在yml文件里mybatis配置上自定义classpath


这个是jar包中mapper.xml的路径,对应包路径如下图

全部配置好后,可以正常启动,并且调用能够调用对应数据库

记录springBoot项目使用jar包中的mapper报错问题相关推荐

  1. maven打包springboot项目的jar包的时候出现报错There are test failures.

    报错信息 There are test failures. Please refer to /Users/2cy/my_idea_project/git_project/wechat-applet-d ...

  2. 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源

    前言:这个是昨天晚上在部署一个项目的时候发现的,在此记录一下 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源 问题描述 在部署了一个项目之后,打开项目页面进行测试,发现有一 ...

  3. java jar 启动项目,SpringBoot项目运行jar包启动的步骤流程解析

    SpringBoot项目在开发中,方便快捷,有一点原因就是SpringBoot项目可以打jar包运行:把jar包直接扔服务器上,然后运行jar包就能访问项目接口了.下面介绍SpringBoot项目打j ...

  4. SpringBoot项目打jar包和war包

    目录 一. SpringBoot项目打war包 二. SpringBoot项目打jar包 背景:使用Idea编辑器 一. SpringBoot项目打war包 步骤: 在pom.xml文件中的<b ...

  5. idea springboot 项目打jar包

    idea springboot 项目打jar包 1.打包前确认项目可以正常运行,打开Project Structure 快捷键 Ctrl+Shift+Alt+S(F4),或者点击下图图标: 2.将代码 ...

  6. SpringBoot项目运行jar包启动

    本文来说下SpringBoot项目运行jar包启动 文章目录 概述 概述

  7. springboot项目发布JAR包

    springboot项目发布JAR包,项目是以springboot和idea来进行开发的

  8. springboot项目打jar包跳过单元测试test

    springboot项目打jar包跳过单元测试test 直接使用maven命令 mvn -B clean package -Dmaven.test.skip=true

  9. Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法

    Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法. 一个Java老项目,更新了日志工具,升级为Log4j2,在引入log4j-api-2.14.0.jar 和log4j-core-2. ...

最新文章

  1. WEB页面多语言支持解决方案(转自CSDN)
  2. vscode安装旧版本插件_2020 我在使用VScode时安装的插件(针对前端开花推荐)
  3. ❤️再也不用为了重写方法而苦恼了,Lombok帮你解决!
  4. c语言课程设计报告内容,c语言课程设计报告
  5. 下载IDEA - 2020.1以及安装IntelliJ IDEA
  6. 关于jxbrowser-7.19
  7. android 评论发表情,安卓微信朋友圈怎么评论发表情包 微信朋友圈评论发表情包方法...
  8. HTML常见标签及个人简历制作
  9. PHP-Web聊天室 一天即可打造自己的聊天室-严双双-专题视频课程
  10. linux latex 英文字体,LaTeX 中的一些英文字体
  11. 视频下载离线工具—“Softorino YouTube Converter”
  12. Java实验-宠物商店(链表与接口的使用)
  13. the jre_home environment variable is not defined correctly this environment vari
  14. MySQL45讲 读书笔记 22讲MySQL有哪些“饮鸩止渴”提高性能的方法
  15. 微信怎样操作开启微信运动?技巧经验!微信中如何去设置微信运动记录运动步数?
  16. 如何修复dns服务器超时,DNS服务器安全及解析超时问题的解决
  17. 身份证复印件的正确使用方法- -
  18. 2019-12-24
  19. 中科大c语言期末考试试卷,中科大–中科院试卷清单总汇.doc
  20. dnf超时空漩涡副本路线流程图_《DNF》超时空漩涡怎么走 超时空漩涡走图开荒教程攻略...

热门文章

  1. Talend API Tester:安装、主要功能、缺点
  2. oracle取前5条数据,ORACLE查询前五条数据
  3. 循环卷积与线性卷积的实现matlab,线性卷积与循环卷积的计算
  4. 63.(cesium之家)cesium河流流水
  5. Windows phone 8 JumpStart--Async
  6. Android开发学习之使用百度语音识别SDK实现语音识别(上)
  7. cad lisp地形拼合_CAD拼图程序lisp程序
  8. 中国版权保护中心账号注册不了怎么解决
  9. TMMI_测试过程改进框架_优化级别8
  10. python中的等于“=”