转载:https://www.jianshu.com/p/bd0311a33c16

现象:

搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???。

 
mysql插入中文乱码

现象分析:

  1. 首先怀疑mysql字符编码格式不是utf-8导致
  2. 在服务器端编码格式错误,导致存到mysql也是乱码
  3. mybatis配置不正确,导致乱码

问题排查:

  1. mysql编码格式

    查看建表时是否执行编码格式:

show create table t_user;

输出如下:

 
create语句

可以看到DEFAULT CHARSET=utf8,建表时已经指定了编码格式。检查mysql配置,也没有问题(mysql配置在这不赘述了,网上很多例子)。

于是,手动插入一条数据,中文能正确插入,因此排除mysql的问题。

  1. 服务端编码格式

    用debug模式调试,在controller层和service层中文显示都是正常的

     
    服务器调试.png

3.mybatis的配置问题

现在排除了其他两种可能,于是重新查看mybatis和datasource的配置

配置如下:

spring:
datasource:
name: test
type: com.alibaba.druid.pool.DruidDataSource
filters: stat
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mytest?nullNamePatternMatchesAll=true&serverTimezone=GMT%2b8
username: root
password: 123456
initial-size: 1
min-idle: 1
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20

发现在url配置项中没有指定编码格式,于是将url配置项改成

url: jdbc:mysql://127.0.0.1:3306/mytest?ullNamePatternMatchesAll=true&serverTimezone=GMT%2b8?useUnicode=true&characterEncoding=utf8

重启项目,重新插入数据,插入正确。

 
编码格式正确

总结

在使用spring boot集成mybatis,mysql的url一定要加上useUnicode=true&characterEncoding=utf8两个配置项,否则插入中文数据乱码。至此,mysql插入中文乱码的问题得以解决,分析中的1、3两点是经常出现问题的原因,因此遇到这类问题先从这两个原因下手。如果有大神还有别的见解,可以留言交流

Spring boot+Mybatis+MySQL插入中文乱码的更多相关文章

  1. spring boot+mybatis+mysql

    spring boot整合mybatis,曾经的几个小困惑和踩的坑. 一.mybatis的结构 mybatis和spring boot的整合,网上无数的教程,都是教你一步步集成,照着做没问题,但做下来 ...

  2. Spring Boot+MyBatis+MySQL读写分离

    读写分离要做的事情就是对于一条sql语句该选择去哪个数据库执行,至于谁来做选择数据库的事情,无非两个,1:中间件(比如MyCat):二:程序自己去做分离操作. 但是从程序成眠去做读写分离最大的弱点就是 ...

  3. 使用spring boot+mybatis+mysql 构建RESTful Service

    开发目标 开发两个RESTful Service Method Url Description GET /article/findAll POST /article/insert 主要使用到的技术 j ...

  4. 从.Net到Java学习第三篇——spring boot+mybatis+mysql

    从.Net到Java学习第一篇——开篇 环境:mysql5.7 新建mysql数据库demo,然后执行如下sql脚本进行数据表创建和数据初始化: -- ------------------------ ...

  5. spring boot+mybatis+mysql增删改查分页

    server: port: servlet: context-path: /springBootMybatis spring: datasource: name: test url: jdbc:mys ...

  6. Spring Boot + MyBatis + MySQL 实现读写分离

    读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做. 读写分离有两种实现方式: 第一种是依靠中间件(比如:MyCat ...

  7. 解决hibernate向mysql插入中文乱码问题

    一.mysql的问题解决 MySQL会出现中文乱码的原因不外乎下列几点:   1.server本身设定问题,例如还停留在latin1   2.table的语系设定问题(包含character与coll ...

  8. python mysql插入中文乱码

    # "INSERT INTO" 语句sql = "INSERT INTO sites (name, url, status, enable) VALUES (%s, %s ...

  9. Windows本地解决MySql插入中文乱码问题

    JSP页面输入的数据也要转化UTF8的编码字符串在传人数据库 一劳用逸 在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以一劳永逸的解决乱码问题.在这个配置文件中 [ ...

随机推荐

  1. 多实例gpu_MIG技术快速提高AI生产率

    多实例gpu_MIG技术快速提高AI生产率 Ride the Fast Lane to AI Productivity with Multi-Instance GPUs 一.平台介绍 NVIDIA安培 ...

  2. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...

  3. 通过Mellanox ConnectX NIC使用XDP加速

    通过Mellanox ConnectX NIC使用XDP加速 Accelerating with XDP over Mellanox ConnectX NICs XDP(eXpress Data Pa ...

  4. 特斯拉Tesla Model 3整体架构解析(下)

    特斯拉Tesla Model 3整体架构解析(中) Tesla Computer Unit 特斯拉已经开发了一个由自动驾驶仪和信息计算机组成的定制"液冷双计算平台"."他 ...

  5. 为什么edge AI是一个无需大脑的人

    为什么edge AI是一个无需大脑的人 Why edge AI is a no-brainer 德勤预计,到2020年,将售出超过7.5亿个edge AI芯片,即在设备上而不是在远程数据中心执行或加速 ...

  6. Python_Selenium 之PO模式的思想、优化思路

    一.PO模式思想 PO模式是一种自动化测试设计模式,将页面定位和业务操作分开,也就是把对象的定位和测试脚本分开,从而提供可维护性. PO设计模式基础(页面作为类.元素对象作为属性.元素操作作为方法) ...

  7. Django(58)viewsets视图集详解

    前言 ViewSet 只是一种基于类的视图,它不提供任何方法处理程序(如 .get()或.post()),而是提供诸如.list()和 .create() 之类的操作. ViewSet 的方法处理程序 ...

  8. 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解

    目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...

  9. CENTOS7 安装 SYNCTHING

    本地电脑需要同步远程数据,安装syncthing 测试 1:下载 wget https://github.com/syncthing/syncthing/releases/download/v1.5. ...

  10. UF_VIEW 视图操作

    Open C   uc6400uc6401uc6402uc6403uc6404uc6405uc6406uc6408uc6409uc6430uc6431uc6432uc6433  获得视图3×3矩阵uc ...