解决Mybatis引入外部文件导致url出错的问题
-
首先说一下我遇见的问题
<property name="driver" value="${driver}"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatisuseUnicode=true&characterEncoding=UTF8&userSSL=false&> <property name="username" value="${username}"/> <property name="password" value="${password}"/>
在这里,我其它的都换成了 ${} 这种取值方式,但是url没换。 此时呢,我能正常从查询到我的数据
但是当我把url也换成 ${} 这种取值方式的时候,出现了bug
具体错误翻译过来是:
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 ';characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8'. 原因:java。sql。SQLNonTransientConnectionException:无法加载连接类,因为基础异常:com。mysql。cj。例外情况。ErrorArgumentException:数据库URL格式错误,无法分析“”附近的连接字符串;characterEncoding=UTF-8(&;userSSL=错误(&S);服务器时区=GMT%2B8'。
后来就仔细找,原来在 <property name="url" value= "" 中 &得转义,得写成这样 & 但是在db.properties中呢,就不行,直接写&就行了。 所以我在核心xml文件中用properties标签引入外部资源文件 url识别不了,始写的原因就是我在xml中最开url值是:jdbc:mysql://localhost:3306/mybatisuseUnicode=true&characterEncoding=UTF8&userSSL=false& 我在db.properties中的url是拷贝的这个,里面的&是应该就直接写&就行的,但我拷贝的是转义后的& 所以我引入资源它报错识别不了我的url 就是&的问题 最后就是把db.properties 中url里的&给直接换成了&