为什么在使用MyBatis、Hibernate等框架时properties文件的jdbc配置不起作用
首先,在xml文件和Java文件中我们都是使用如下配置:
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=utf8&serverTimezone=Hongkong"/>
<property name="username" value="root"/>
<property name="password" value="mysql"/>
代码运行一切正常;
其次我们在properties文件里面的配置通常都是从xml或者Java文件复制过来
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=utf8&serverTimezone=Hongkong
jdbc.username=root
jdbc.password=mysql
结果运行出错,错误如下:
### Error querying database. Cause: java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception: com.mysql.cj.exceptions.WrongArgumentException: Malformed database URL, failed to parse the connection string near 'jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=utf8&serverTimezone=Hongkong'.
### The error may exist in mapper/Usermap.xml
### The error may involve test.getUser
### The error occurred while executing a query
### Cause: java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception: com.mysql.cj.exceptions.WrongArgumentException: Malformed database URL, failed to parse the connection string near 'jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=utf8&serverTimezone=Hongkong'.
决解办法,properties文件改为
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=utf8&serverTimezone=Hongkong
jdbc.username=root
jdbc.password=mysql
也就是把&
改为&
,因为properties文件识别不了&
无法编译,导致连接不到数据库。