mybatis连接mysql url_MyBatis与JDBC连接数据库所使用的url之间的差异

本文介绍了在Windows7上使用MyBatis和JDBC连接MySQL 8.0时遇到的问题。在MyBatis配置中,URL中的'&'符号需要转义为'&',而JDBC连接则不需要此转义。通过修改URL解决了连接异常,详细过程和错误信息在文中详述。
摘要由CSDN通过智能技术生成

在Windows7 系统上安装了MySQL 8.0,然后创建Maven工程,配置pom.xml文件,添加了如下依赖:

org.mybatis

mybatis

3.4.6

mysql

mysql-connector-java

8.0.11

(1)在mybatis-config.xml中,配置数据库连接环境:

运行测试函数进行连接测试,出现如下错误提示:

org.apache.ibatis.exceptions.PersistenceException:

### Error building SqlSession.

### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 21; columnNumber: 102; 对实体 “characterEncoding” 的引用必须以 ‘;’ 分隔符结尾。

上网搜索解决方案,才知道 mybatis 的配置文件中,这里 url 中的 ‘&’ 符号应当写成 ‘&’ ,修改后的 url 如下:

这样就可以正常连接了。

(2)鉴于1中的错误,尝试使用JDBC连接MySQL时,如下进行连接:

@Test

public void testJDBC()

{

Connection conn = null;

try

{

String userName = "root";

String passWord = "password@password";

String jdbcUrl = "jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";

Class.forName("com.mysql.cj.jdbc.Driver");

conn = DriverManager.getConnection(jdbcUrl, userName, passWord);

String sql = "select id,countryname,countrycode from country";

PreparedStatement pstmt = conn.prepareStatement(sql);

ResultSet rs = pstmt.executeQuery();

while (rs.next())

{

int id = rs.getInt("id");

String countryname = rs.getString("countryname");

String countrycode = rs.getString("countrycode");

System.out.println(id + "\t" + countryname + "\t" + countrycode);

}

pstmt.close();

}

catch (ClassNotFoundException e)

{

e.printStackTrace();

}

catch (SQLException e)

{

e.printStackTrace();

}

finally

{

System.out.println("Game Over!");

}

}

运行测试函数,结果出现如下错误:

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&useSSL=false&serverTimezone=UTC’.

尝试修改 url ,将 ‘&’ 改成 ‘&’ , 结果就运行正常了,说明 JDBC 方式连接 MySQL 不需要对 ‘&’ 进行转义。

特此记之。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值