Cause: org.apache.ibatis.datasource.DataSourceException: Unknown DataSource property:XXX

今天配置完mybatis写好测试代码后遇坑:

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in SQL Mapper Configuration
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.datasource.DataSourceException: Unknown DataSource property: userName
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:79)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:63)
	at com.caijiyuan.util.GetSqlSession.createSqlSession(GetSqlSession.java:22)
	at com.caijiyuan.util.GetSqlSession.main(GetSqlSession.java:33)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.datasource.DataSourceException: Unknown DataSource property: userName
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:106)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:89)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:77)
	... 3 more
Caused by: org.apache.ibatis.datasource.DataSourceException: Unknown DataSource property: userName
	at org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory.setProperties(UnpooledDataSourceFactory.java:51)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.dataSourceElement(XMLConfigBuilder.java:270)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.environmentsElement(XMLConfigBuilder.java:228)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:101)
	... 5 more

问题可以定位到mybatis-config.xml配置文件的dataSource下的userName与userPassword的property的这两句,这两句的name属性的值出了问题,奇怪的是另两个property的name属性却没问题
在这里插入图片描述
原来,在mybatis的数据源配置中,name 属性指定了数据源的属性名,value 属性接收该property的值。这些name属性名是特定的,需要与数据源实现所期望的属性名一致,才能正确地配置数据源而不报错。也就是说name属性的名不是自定义的是由数据源实现库(例如连接池库)所定义的。不同的数据源实现可能有不同的属性名要求,比如驱动程序类名、连接字符串、用户名、密码等,name 属性的值必须与你所使用的数据源实现所期望的属性名一致,才能正确地配置数据源。

一些常见的属性名
driver: 数据库驱动程序的类名或别名。
url: 数据库连接字符串。
username: 数据库用户名。
password: 数据库密码。
maxActive 或 maximumPoolSize: 数据源的最大活动连接数。
initialSize: 数据源的初始连接数。
minIdle 或 minimumIdle: 数据源的最小空闲连接数。
maxIdle 或 maximumIdle: 数据源的最大空闲连接数。
connectionTimeout: 连接超时时间。
idleTimeout: 连接空闲超时时间。
validationQuery: 用于验证连接的 SQL 查询语句。
testOnBorrow: 获取连接时是否执行验证查询。
testWhileIdle: 连接空闲时是否执行验证查询。

但具体取决于所使用的数据源实现库,如果你使用了不正确的属性名,数据源实现库可能无法识别或解析这些属性,从而导致报错。如果使用的是特定的数据源实现库(例如 Apache Commons DBCP、HikariCP 等),可以查阅相关文档或示例代码,了解该库所期望的属性名和配置方式。
因此在代码一个将两个name属性名改为:
在这里插入图片描述
就不会报错了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤米尼克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值