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

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


1.PNG

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

显示乱码

2.PNG

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


3.PNG
<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.PNG
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>

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

SSL连接验证问题

5.PNG

出现该问题的原因是已经建立了SSL的连接,但是没有进行身份验证,所以会报错,这里将SSL默认改为false就好:


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

符号&的转义

之前提到,符号&在语句中报错,出现如下问题:


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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容