Mybatis使用JDBC连接数据库报错及解决方案

Mybatis中,首先需要在主配置文件SqlMapConfig.xml中配置好数据库的连接参数,主要是四个参数:driver、url、username和password。

1

在配置和测试的过程中发现了以下几个问题,所以寻求解决方案:

显示乱码

2
仔细阅读以下可以发现是时区的问题。表示Mysql无法识别该时区或者存在多个时区,需要配置serverTimezone属性对时区进行修改。修改后如下:
3

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"/>

此时再执行测试类就不会报相关错误了。

中文显示乱码

这个很多人也提到了,主要是useUnicode和characterEncoding这两个参数的问题,更进一步就是数据库的编码问题:

useUnicode 是否使用Unicode字符集,如果参数characterEncoding进行修改的话,前提是useUnicode参数需设置为true
characterEncoding 用于指定字符编码,常用的有utf-8、GB2312和GBK

4

<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>

带上这两个参数就可以了(需要将数据库编码也改为utf-8)。这里注意图片中“&”其实也报错,这里先按下不表,最后解决。

SSL连接验证问题

Mybatis使用JDBC连接数据库报错及解决方案_第1张图片
出现该问题的原因是已经建立了SSL的连接,但是没有进行身份验证,所以会报错,这里将SSL默认改为false就好:
6

<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>

符号&的转义

之前提到,符号&在语句中报错,出现如下问题:
7
实际是因为符号&没有转义造成的,需要将“&”改写为“&;”:

<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false"/>

综上,Mybatis使用JDBC连接数据库的基本错误就全部解决了。

你可能感兴趣的:(Mybatis学习)