Fork me on GitHub

血的教训 之 db.properties配置文件

  sb的我竟然能因为乱码问题折腾一天,原因也是让我意想不到:错误出现现在mysql数据库的url地址配置上😭。

其实在配置mysql的url的时候由于我记得不是特别牢,还特意在网上搜了url配置,并复制使用了某位博主的代码。
jdbc:mysql:///mybatis?useSSL=false&useUnicode=true&charsetEncoding=utf-8
就是它,我乱码的罪魁祸首😭。
细心的你就会发现错误了,characterEncoding才是正解。

  额,没什么可说的,就是希望那位博主别再误人子弟了😒。

一、解决流程

  1. 先检查了自己是否配置了request.setCharacterEncoding("utf-8");
  2. 没问题后,确认是否是post请求的方式,后面还特地用函数检查String method = request.getMethod();
  3. 观察是在什么阶段发生乱码的。经过数据打印,发现在sqlSession.commit();前都不会乱码 🤔
  4. 在解决无果后,开始检查所有文件的编码格式,IDEA的setting中的File Encodings全部配置为utf-8,使用手动配置的Tomcat8.5,清除缓存等等无脑操作,还是无果
  5. 晚上回来,静下心来,分析可以发现在commit前没有问题,但到数据库的数据始终是乱码的,错误可能发现在mysql数据库上✨
  6. 先是检查数据库、表创建是的编码——是utf-8。然后是,db.properties配置文件,乍一看没什么问题。于是又在网上查看mysql数据库参数配置,一行一行的对比发现了错误。哎!!

二、代码 —— 牢记

  在此做一下记录:

#Connect/J version 5.X
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///mybatis?useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8
username=root
password=root
#Connect/J version 6.X以后的版本,适合于MySQL8.x新版本
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///mybatis?serverTimezone=UTC&useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8
username=root
password=root

三、注意事项

  mysql的url相关配置可以根据自己的实际应用场景添加其他参数配置。

1、mybatis中

  注意在mybatis-config.xml中要将<properties resource="db.properties"/>放在<configuration></configuration>内的最前面。
image

四、经验教训

  网络的水很深,我有点把握不住。自己经过测试的代码,才是自己的😢。

posted @ 2022-03-25 20:37  Lencamo  阅读(978)  评论(0编辑  收藏  举报