拼写粗心导致的错误:mybatis配置文件、spring配置文件

------------------------2018-07-03 No.2

Q1:

报错信息:

java.sql.SQLException: No suitable driver
             at java.sql.DriverManager.getDriver(Unknown Source)

             at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285)

             at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
             at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
             at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
             at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
             at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
             at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
             at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
             at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
             at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)


原因分析:以上红字表示没有匹配到驱动

原因 ①:jdbc.proprities文件的配置写错,对下如下正确的配置内容:

正确:

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/o2o?useUnicode=true&characterEncoding=utf8
jdbc.username = root
jdbc.password = SQL.123456

代码测试:

public class TestMysqlConnection {
  public static void main(String[] args) {
    String url = "jdbc:mysql://localhost:3306/o2o";
    String username = "root";
    String password = "SQL.123456";
    try {
      Connection con = (Connection) DriverManager.getConnection(url , username , password ) ;
      System.out.println("url,username,password:"+url+username+password);
      System.out.println("数据库连接成功!");
    }catch (Exception e) {
      // TODO: handle exception
      System.out.println("数据库连接失败!");
    }
  }
}

原因 ②:根据at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285),spring配置文件,查看数据库连接池的配置内容,发现拼写错误。

错误如下:

<!-- 配置连接池 -->
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.driver}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

修正:

<property name="jdbcUrl" value="${jdbc.url}"/>

---------------------------------------------------------------------

Q2:

报错信息:

警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException:

Error creating bean with name 'sqlSessionFactory' defined in class path resource [spring/spring-dao.xml]: Invocation of init method failed;

nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [mybatis-config.xml];

nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration.

Cause: org.apache.ibatis.builder.BuilderException: The setting mapUnderscoreToCameCase is not known.  Make sure you spelled it correctly (case sensitive)

原因分析:根据以上标记的红字,可能出现错误的地方在 spring-dao.xml 文件中的 mapUnderscoreToCameCase,找到该处,发现mapUnderscoreToCameCase拼写错误,

正确改为:mapUnderscoreToCameCase -->mapUnderscoreToCamelCase

总结:

花了一个小时时间,排除了mybatis版本、@ContextConfiguration的路径问题,数据库驱动问题,发现是低级的拼写错误导致,

以后需要小心仔细,尽量不浪费有效的时间!

猜你喜欢

转载自www.cnblogs.com/lilySeven/p/9259469.html