Spirng配置类连接数据库出现url错误,

通过xml配置文件,连接数据库代码,这样是可以正常的

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      destroy-method="close">
    <property name="url" value="jdbc:mysql://localhost:3306/user_db?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=UTC"></property>
    <property name="username" value="root"></property>
    <property name="password" value="ztbdlb"></property>
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>

</bean>

后来用了配置类来创建数据库连接,代码如下
@Bean
public DruidDataSource getDruidDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/user_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("ztbdlb");
return dataSource;
}
然后就出错了
create connection SQLException, url: jdbc:mysql://localhost:3306/user_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC, errorCode 0, state 08001
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 ';allowPublicKeyRetrieval=true&serverTimezone=UTC'.
后来把url修改一下就好了
修改前:jdbc:mysql://localhost:3306/user_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
修改后:jdbc:mysql://localhost:3306/user_db
求解释一下吗

这哪来的分号

img

可以正常使用的,如下图,我们就是这样用的

img

根据报错信息,应该是你刚开始把xml中的url原值赋值过去了,其实需要将&连接符换成&就行了,可以参考如下链接:
https://www.cnblogs.com/zltao/p/11194702.html

应该是你粘贴URL到xml文件的时候,出现了编码问题:

<property name="url" value="jdbc:mysql://localhost:3306/user_db?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=UTC"></property>

里面被添加上了amp;这种样式的字符,所以导致创建数据库连接的时候,报解析url异常的问题。

所以你修改前的url也是没啥问题的,就是在xml里乱码了而已,删除掉amp;这种样式的字符即可。

最好用Notepad这类文本编辑器来编辑配置文件,复制粘贴的时候,尤其是从word、excel处复制来字符串,最好检查下有没有乱码。

纯手打,如果对你有帮助,麻烦点一下"采纳"呗,哈哈哈

url中的&删掉