SSM整合时报错org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'woshin'@'localhost' (using password: YES))
### The error may exist in ssm/mapper/ItemsMapper.xml
### The error may involve ssm.mapper.ItemsMapper.selectByPrimaryKey
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested 

 

最近在做springmvc-spring-mybatis的整合,然而,一个小的问题造成了我一上午的困惑啊。最后发现问题很蠢,但是还是拿出来,希望为大家有类似的问题的时候有个借鉴。

 

@Test测试方法时,控制台报出cannotGetJdbcConnectionException这个异常,开始我以为是我的spring中applicationContext.xml中的bean标签id不匹配,检查了一遍又一遍,但是问题依然存在。我又坚持按照执行的过程,发现好像是我的配置文件路径有问题,于是改成了如下。

"classpath:spring/applicationContext-dao.xml"

然后发现,也不是。。。。绝望啊,百度了一下,发现有类似的问题。

 

SSM 框架中配置文件提示错误:

Error querying database.  
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; 
nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver  '

 

 

遇到这个异常,并花了不少时间。

 

异常:org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver '

不能加载驱动。

这个异常原因:

  1. mysql驱动没有找到:解决方法,到oracle下载mysql对应版本的驱动,

    下载什么版本的mysql驱动呢? mysql官网已经有说明了。

    mysql5.x基本选择 mysql connector/j 5.1以上就ok。也是mysql推荐我们使用的驱动。mysql5.0以后版本不再兼容以前的版本。

    在项目中的lib导入mysql connector/j 5.1+ 和在tomcat/lib里面加入mysql connector/j 5.1+

  2. 还有什么原因出现上述异常呢?

如:(1).jdbc.driver=com.mysql.jdbc.driver 

 drivername应该是com.mysql.jdbc.Driver这样才正常。
(2).jdbc.driver=com.mysql.jdbc.Driver(这里可能有空格)   在驱动后面带了空格之类,我遇到属于这类。

 

额额,看了一下忙检查我的是不是也有类似的问题,然儿,白瞎,,,。

 

第一遍没看出来啥猫腻,一切正常,所有配置文件都自己加载了,并且都执行了,但是在最后返回的时候是空指针,不能创建sqlsessionfactory,没办法仔细阅读一遍吧,然后,,让我发现了他的小秘密,

 

SSM整合时报错org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection_第1张图片

原来org.springframework.core.env.PropertySourcesPropertyResolver,这个类会去加载你的各项属性,但是他先会去你的环境属性去寻找,再去系统属性去寻找,然后再去系统环境去寻找,如果这期间找到了与property 标签里的name相匹配的key则不继续寻找直接return,否则 return  null,并在本地properties开始寻找。。。这就明了了。。原来我的本地系统用户名,username与property 标签里的name一样,被抓取出来了,都没执行到本地的db.properties文件。。

于是,我改了applicationContext.xml中的property的name属性为name,并将db.properties也改为name。当然,结果是:成功了。

 

问题虽然很智障,当时也是没仔细看看报错信息,

Access denied for user 'woshin'@'localhost' (using password: YES)

 

user并不是localhost而是'woshi'@'localhost',不然早就解决了。。但是,有没有大牛知道怎么能指定让他去找本地的properties文件,而不用把名改掉么??求指教啊!

 

注: 之前使用七牛云存储的照片全部丢失了,文章大概意思可以看懂就好,不懂得可以留言。照片就不补了。

你可能感兴趣的:(框架,SSM框架,连接报错,Mybatis)