IllegalArgument dataSource or dataSourceClassName or jdbcUrl is required.XXXMapper.java (best guess)
这阵子一直在修改之前同事遗留下来的老代码,今天遇到了这样一个错误:
Error querying database. Cause: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
### The error may exist in com/xxx/service/xxx/mapper/XXXMapper.java (best guess)
### The error may involve com.xxx.service.xxx.mapper.XXXMapper.selectXXX
### The error occurred while executing a query
### Cause: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.] with root cause
java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
这错误表面上一看很简单,就是数据库的配置问题,肯定是哪里配置错了。于是开始各种对配置,核对了properties文件、DataSourceConfig.java
配置文件,都没有问题,于是开始百度。
百度得到的答案几乎是一水地说SpringBoot1.0配置项是url,2.0配置项是jdbc-Url,但是并没有什么用。
当时的项目的架构是十几个项目,大概架构如下,简略一些可以以3个项目概括吧:
项目A、项目B,和项目大C。项目A和B打成jar包,放到项目大C下,启动项目大C对外提供服务(实际的项目复杂度远高于此,十几个项目相互交错错综复杂,令人头疼不已)。
然后项目A和项目B两者互不依赖,但是两者需要用到一个相同的Mapper,于是当时两个项目下都有如下Mapper文件:
项目大C依赖项目A、B之后,启动并不会报错,但是只要调用到这个Mapper的方法,就会报文章开头的那个错误。
究其原因,重点不在于配置项,而在于:
看到best guess
就明白了,程序在猜测我到底想使用哪个Mapper,因为两个项目都有,而且路径和名称都相同。
于是想到的第一个解决办法就是把名称改掉。
但是改掉之后依然报同样的错误,可见直修改Mapper的名称行不通。
于是干脆把路径和名称全部改掉。我把Mapper所在路径修改到其他路径下,然后把名称也改成和之前不一样的名称。然后这时候不要忘记改一下DataSourceConfig.java
的扫包配置,否则找不到了:
@Configuration
@MapperScan(basePackages = {"com.xxx.service.xxx.mapper", "com.xxx.xxx.xxx.mapper.xxx"},sqlSessionFactoryRef = "xxxSqlSessionFactory")
public class DataSourceConfig {}
两份Mapper文件,不同路径,不同名称,basePackages配成两个,启动项目,再次请求,返回成功。
至此这个错误就成功解决了。
喜欢本文的朋友不要忘记点一个免费的赞哦,你的赞将是我最大的动力。
IllegalArgument dataSource or dataSourceClassName or jdbcUrl is required.XXXMapper.java (best guess)相关推荐
- IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required
在springboot配置多数据源的时候报错: 2019-04-10 17:44:44.448 ERROR 12164 --- [ XNIO-2 task-20] com.zaxxer.hikari. ...
- HikariPool-1 - dataSource or dataSourceClassName or jdbcUrl is required.解决方案
故障错误 最近在使用Spring Boot 2.x with H2 Database 以及JPA整合一个项目的时候出现了下面这一个故障: ERROR 21448 --- [ main] com.zax ...
- 成功解决:Activiti HikariPool-1 - jdbcUrl is required with driverClassName.
问题描述 报错内容如下: 2022-03-13 23:17:25.065 ERROR 12888 --- [ main] com.zaxxer.hikari.HikariConfig : Hikari ...
- Spring Boot 2.0 多数据源编程 jdbcUrl is required with driverClassName
转载:https://my.oschina.net/chinesedragon/blog/1647846 Spring Boot 2.0 多数据源编程 在Spring Boot 1.5.x之前,多数据 ...
- Failed to convert property value of type java.lang.String to required type java.lang.Integer for pro
Failed to convert property value of type java.lang.String to required type java.lang.Integer for pro ...
- Failed to convert value of type 'java.lang.String' to required type 'java.util.Date
异常原因:Controller层获取JSP页面请求参数是String类型,而在Controller层接收时使用Date类型,属于方法参数类型不匹配异常 警告: Failed to bind reque ...
- spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘
前言 springboot有接口日期转换的经典问题,给Entity加@JsonFormat解决了输出json日期格式的输入输出问题,但是解决不了非@RequestBody/也就是普通表单提交的日期格式 ...
- Cannot convert value of type ‘java.lang.String‘ to required type ‘java.util.Map‘ for property ‘param
问题描述 若依中使用feign进行远程调用,在get请求中使用@SpringQueryMap映射对象时,映射对象的父类中带有Map<String, Object>类型的params属性时, ...
- Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.Date‘;
在Java的controller中添加一个方法即可解决 /*** 解决:Failed to convert value of type 'java.lang.String' to required t ...
最新文章
- jvm性能调优实战 - 39一次大促导致的内存泄漏和Full GC优化
- seo需要处理页面html,为什么单页面的seo不友好?如何解决这一问题?
- java bean 工厂模式_深入理解Java的三种工厂模式
- Spring Boot+Vaadin 14项目初始化
- 用户名登陆时如何在后面加一个小红*_最后一个登陆框引起的血案
- 原生js实现分页效果(带实例)
- 计算机怎么打不开照相机图片,Win10系统相机打不开怎么办-电脑自学网
- 机器学习误差计算及评估指标
- 图片默认底部3px缝隙
- SHELL第一天课堂练习
- Container及其内部进程监控剖析
- LZJ的Python第二次打卡
- 药店微信小程序的功能
- 让人眼花缭乱的视错觉,太酷炫了!
- 追风筝的人 第九章
- kotlin中的var和val与编译时常量
- 【计算机视觉】opencv姿态解算4 视觉导航 单目特征检测与实时位姿
- 程序员北漂没钱整租,如何爱上合租?
- python爬虫爬取新闻实战01:小白如何迅速学会爬虫爬取上千条新闻
- 鸡兔同笼问题,假设鸡兔同笼,上有35个头,下有94只足,问鸡兔分别有几只?