Mybatis + Mysql 插入数据时中文乱码问题

发布时间:2018-07-11 MYBATIS MYSQL 数据库中文乱码

近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql。

今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下。

 

对于数据库操作中出现的中文乱码,一般有两种情况:

  • 数据库本身设置
  • 连接数据库时,jdbc的编码设置

对于第一种情况,可以查看自身的mysql设置:

show variables like '%character%'

 

我的问题是第二种情况,需要在mybatis的配置文件中设置, 之前我的连接字段是:

复制代码
    <!-- 1. 数据源 : DriverManagerDataSource -->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/uct"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
    </bean>
    
复制代码

修改后为:

复制代码
    <!-- 1. 数据源 : DriverManagerDataSource -->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/uct?useUnicode=true&amp;characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
    </bean>
    
复制代码

可以看到在连接的url后添加了useUnicode和characterEncoding的值,设定为utf-8.

这里有一点需要注意的是,在xml配置文件中,需要将'&'符号转义,所以这里要写成'&amp;'。

 

如果是在配置文件中,则无法转义,应为: xxxx.jdbc.url=jdbc:mysql://127.0.0.1:8080:3306/uct?useUnicode=true&characterEncoding=UTF-8

更多相关推荐


Mysql5.1.71主从复制replication配置

发布时间:2014-11-14 MYSQL MYSQL主从复制
 Mysql主从复制主库:192.168.114.11备库:192.168.114.12(1)首先确保主从服务器上的Mysql版本相同(2)在主服务器上,设置一个从数据库的账户,使用REPLICATIONSLAVE赋予权限1.主从安装mysql安装[root@rhel65-mysql01~]#yuminstallmysqlmysql-server启动[root@rhel65-mysql01~]#/...

linux centos6.4 mysql主从同步配置

发布时间:2015-01-05 MYSQL
装好mysql后进行主从mysql的/etc/my.cnf配置主的my.cnf主my.cnf#Adjustsizesasneeded,experimenttofindtheoptimalvalues.#join_buffer_size=128M#sort_buffer_size=2M#read_rnd_buffer_size=2M#datadir=/var/lib/mysql#socket=/va...

MySQL主从设定

发布时间:2014-10-31 MYSQL
MySQL主从设定mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复需要两台机器,安装mysql,两台机器要在相通的局域网内主机A:192.168.1.100从机B:192.168.1.101可以有多台从机1、先登录主机Amysql&gt;GRANTREPLICATIONSLAVEON*.*TO‘backup’@’192.168.1.101‘IDENTIFIEDBY...

mysql修改密码

发布时间:2014-10-31 MYSQL
MySQL设置root密码mysql&gt;UPDATEmysql.userSETPassword=PASSWORD('newpwd')WHEREUser='root';mysql&gt;FLUSHPRIVILEGES;...

详解Mysql-5.7解压版配置

之前用的都是mysql5.5安装版,很多配置信息在安装的时候就傻瓜式的配置好了,最近下了一个5.7版本的,一看是解压版,就有点懵逼了,目录上有点小小的变化。在配置的过程中,也是费了很长时间,踩了各种坑,有一个地方非常值得注意,在初始化后生成的随机密码,如果密码中有&amp;这个符号,登录的时候可能会出现无法连接数据库的问题,如果遇到这个问题,只需要在进程中将mysql服务kill掉,然后删除mys...

深入分析MySQL系列之总体架构介绍

发布时间:2022-05-27 数据库 MYSQL 架构 JAVA 后端
我们详细深入介绍MySQL的方方面面之前,让我们首先来看一下MySQL的总体架构,从总体上对MySQL有所了解,这样我们在后面的具体介绍部分的时候才能够知道这些部分属于哪个模块,大概有什么样的作用。MySQL的逻辑架构首先我们来看一下MySQL的逻辑架构,如下图所示。我们可以看到大概可以分成三层:Connection/threadhanding,这一层其实和MySQL没有什么大的关系,在一般的C/...

基于springboot+jpa+mysql+html网上中药商城系统

一、系统介绍系统主要功能:客户:主页、用户登陆、用户注册、我的购物车、我的订单系统管理员:用户管理、分类管理、订单管理、商品管理二、功能展示1.主页(客户)2.登陆(客户)3.注册(客户)4.购物车(客户)5.我的订单(客户)6.用户管理(管理员)7.分类管理(管理员)8.订单管理(管理员)9.商品管理(管理员)三、获取源码点击下载基于springboot+jpa+mysql+html网上中药商城...

MySQL驱动中关于时间的坑

发布时间:2022-05-27 数据库 MYSQL 架构 JAVA 后端
最近在做一个小框架,因为本身比较精简,就没有引入太多依赖,直接用了JDBC来操作数据库,因为我的表中有一个datetime类型的字段,对应的Java代码中使用的是java.time.LocalDateTime,在处理这个日期字段的时候,就遇到了一个有趣的问题;在我的数据库表建好后,在Java中使用JDBC原生API实现了一个repository,包含一些数据库的操作,因为代码中有java.time...

记一次远程调用数据库报错的大坑!

发布时间:2021-10-13 MYSQL DOCKER BIG DATA KENG
背景:远程服务器为Linux使用docker容器化mysqldos窗口远程调用、JDBC基础调用均正常,连接池严重报错处理:刚开始看到报错里有这么段话CommunicationslinkfailureThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhasnotreceivedanypacketsfromthe...

【MySQL】数据库多表操作通关教程(外键约束、多表联合查询)

💁个人主页:Nezuko627的博客主页❤️支持我:👍点赞🌷收藏🤘关注🎏格言:一步一个脚印才能承接所谓的幸运本文来自专栏:MySQL8.0学习笔记本文参考视频:MySQL数据库全套教程欢迎点击支持订阅专栏❤️1多表关系🍑一对一关系比如:一个人有一个身份证,一个身份证对应一个人;实现原则:在任一表中添加唯一外键,指向另一方主键;在实际开发中遇到一对一情况比较少,遇到一对一关系一般合并表。在下图中,可...

SQL注入问题

发布时间:2022-01-19 MYBATIS MYSQL SQL 数据库
下述操作将会以MySql数据库为例引用的是ums库中的t_user表表中只有一条数据,username与password的数据均为admin1.简介SQL注入攻击是比较常见的网络攻击方式之一它不是利用操作系统的BUG来实现攻击,而是发生于应用程序之数据库层的安全漏洞。针对程序员编写时的疏忽通过SQL语句,实现无账号登录,甚至篡改数据库简单来讲,是在输入的字符串之中注入SQL的指令那么这些注入进去的...

mysql修改字符集问题

发布时间:2019-11-14 MYSQL 字符集
mysql字符集问题:  本文主要解决mysql7以下问题:mysql7在默认安装后,关于数据库,表默认保存字符格式为latin1:  可以通过命令:查询当前mysql的编码设置: showvariableslike'char%';      在这种编码设置下,插入中文会报错:     解决方法: 1.修改配置文件   修改配置文件下次默认键数据库,表改为所修改的字符集   1)windowsmy...

连接池配置——Tomcat6.0/5.5+MySQL5.0+JDK1.6+MyEclipse8.0GA

1--(引入)上网查了下,Tomcat 6的配置和以前的不同了,不推荐在server.xml中进行配置,而是在context.xml中进行配置才是更好的方法。是自己项目目录下的“context.xml”文件,不是“tomcat_home/conf”下的。而是tomcat_home/webapps/yourApp/META-INF/context.xml下的,因为我的网站项目目录中没有context...

Tomcat6.0连接池配置

[size=medium]Tomcat6.0连接池配置1.配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:查看复制到剪切板打印&lt;Resourcename="jdbc/oracle"auth="Container"type="javax.sql.DataSource"driverClassName="oracle.jdbc.driver.OracleDrive...

tomcat5.5、tomcat6.0连接池配置

发布时间:2009-05-12 MYSQL SQL SQL SERVER XML WEB
[quote]tomcat5.5[/quote]首先记得把数据库驱动放到server/lib/下面,我用的是tomcat5.5和mysql5.01,第一种方法:配置全局的连接池,可以由多个工程引用在server.xml文件中的&lt;GlobalNamingResources&gt;结点下面添加,连接池设置&lt;Resourcename="jdbc/mysql"type="javax.sql.D...

mysql数据库更改表相关操作

发布时间:2017-07-27 MYSQL 数据库
1、更改表名:ALTERTABLEtablenameRENAMETOnewtablename2、在所在数据库中复制某数据库中的某张表(仅复制表结构,不能复制表记录)CREATETABLEnewtablenameLIKEdbname.tablenameCREATETABLEdb1.tableXLIKEdb2.tableY3、在同一数据库中复制某张表(包括表结构和表记录)CREATETABLEnewT...

浅谈mysql配置优化和sql语句优化

发布时间:2014-06-09 SQL优化 MYSQL
  很久之前就想写一篇关于mysql优化方面的文章了,忙于工作,在着也比较懒散。现在网上mysql优化方面的帖子很多,也不乏精品。很早听一DBA前辈说过:mysql的优化,三分配置的优化,七分sql语句的优化。之前不是很理解,但接触到高并发大数据的时候,这句话的含义尤为突出,甚至可以说一分配置的优化,九分语句的优化。mysql的优化,一般分为配置的优化、sql语句的优化、表结构的优化、索引的优化,...

MySql5.7.28在Linux下的安装教程

发布时间:2019-12-19 MYSQL SQL 数据库
MySql5.7.28在Linux下的安装教程下载安装包方法一:直接在Linux上下载wgethttps://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz方法二:官网下载,再上传Linux打开网址:https://dev.mysql.com/downloads/mysql/,如下图点...

mysql-Linux下安装

发布时间:2017-06-25 MYSQL LINUX ---数据库
1、下载地址     https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz2、将压缩包上传到服务器   3、解压    tar-zxf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz4、移动压缩包至mysql文件夹下    mp mysql-5.6.2...

阿里云服务器中安装配置MYSQL数据库完整教程

发布时间:2020-04-17 MYSQL 阿里云 LINUX 数据库
阿里云服务器中安装配置MYSQL数据库完整教程一、确保服务器系统处于最新状态(这步操作可有可无)第一步:确保服务器系统处于最新状态(这步操作可有可无)[root@localhost~]#yum-yupdate如果显示以下内容说明已经更新完成Replaced:grub2.x86_641:2.02-0.64.el7.centosgrub2-tools.x86_641:2.02-0.64.el7.cen...

Linux下安装MySQL-5.7.28步骤

发布时间:2020-09-03 MYSQL
一、下载二、环境配置#rmp-qa|grep-imysql如果有进行卸载,如果没有跳过#rpm-e--nodepsmysql-libs-5.1.52-1.el6_0.1.x86_64检测系统是否自带mariadb#rpm-qa|grepmariadb如果有进行卸载,如果没有跳过#rpm-e--nodepsmariadb-libs-5.5.64-1.el7.x86_64#rpm-e--nodepsm...

mysql数据库常用的时间函数

发布时间:2016-02-26 MYSQL 常用操作
1.返回日期 SELECTCURDATE();2.返回当前时间SELECTCURTIME();3.返回当前时间和日期SELECTNOW();4.返回函数执行时的时间SELECTSYSDATE();5.转换一个字符串为日期STR_TO_DATE(str,format)SELECTSTR_TO_DATE('08/09/2008','%m/%d/%Y');6.日期转为字符串DATE_FORMAT(dat...

事务实现机制

发布时间:2022-05-28 JAVA MYSQL DATABASE 数据库
事务的实现相对比较复杂,它是基于多种机制和方案共同保障而做到了。比如,通过回滚机制实现事务的原子性;借助锁机制和MVCC(多版本并发控制)保证事务的隔离性和并发性;基于WAL、Checkpoint、CrashRecovery、重做或回滚等机制实现事务的持久性;通过约束一致性(唯一索引、外键、check、NOTNULL等完整性约束)和数据一致性(由原子性、隔离性、持久性等机制保证,尤其是持久性保证数...

数据库备份

发布时间:2022-05-28 MYSQL 服务器 数据库
数据库备份1、概述数据库备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间。2、备份分类按照不同的维度,通常将数据库的备份分为以下几类:2.1物理备份与逻辑备份物理备份:备份的是完...

mysql基本命令大全

发布时间:2015-04-10 MYSQL
1、连接Mysql格式:mysql-h主机地址-u用户名-p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql-uroot-p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符...

【狂神说】MySQL学习

发布时间:2022-05-26 学习 MYSQL JAVA学习 数据库
【狂神说Java】MySQL各种包链接:https://pan.baidu.com/s/15bHpYTj_1hQFcMouixNIQg?pwd=s4y2提取码:s4y21、初试MySQLJavaEE:企业级Java开发Web前端(页面:展示,数据!)后台(连接点:连接数据库JDBC,链接前端(控制,控制视图跳转,和给前端传递数据))数据库(存取数据,txt,Excel,word)只会写代码,学好数...

Mysql-day01pm_操作数据库、数据表(DDL)

发布时间:2022-04-29 笔记 DATABASE 数据库 MYSQL JAVA
一、操作数据库创建数据库  创建数据库的语法:(SQL语句不区分大小写):     1、createdatabase数据库名(直接创建数据库)     2、createdatabaseifexists 数据库名(此语句先判断当前数据库是否存在,如果存在,则不         再创建并且不会报错;如果不存在,则创建一个数据库,数据库名称与语句中的数据库          名相同)    3、crea...

MySQL 锁机制、存储引擎、数据类型

发布时间:2022-05-01 数据类型 MYSQL 存储引擎
 数据库锁的分类数据库本身也提供了一些锁,按加锁方式分为乐观锁:需要增加一个额外的版本号字段,标识记录的数据版本,提交更新时校验数据版本是否一致。实际并没有加锁,并发支持好。悲观锁:数据库本身提供的锁机制,直接调用相关语句即可,可细分为排它锁、共享锁。操作之前需要先加锁,并发支持差。 按照读写权限分为排它锁:又叫做写锁、X锁,同一时刻,最多只能被一个线程持有,最多只能有1个线程对加锁的这块数据进行...

Linux LNMP平台架构搭建

发布时间:2020-10-08 LINUX LNMP MYSQL NGINX PHP
安装nginx1.关闭防火墙及内核防护systemctlstopfirewalldsystemctldisablefirewalldsetenforce02.安装环境依赖包yuminstallgccgcc-c++pcre-develzlib-d3.编译安装nginxtarzxvfnginx-1.12.2.tar.gz-C/opt/cd/opt/nginx-1.12.2useradd-M-s/sbi...

Mybatis爬坑记录

发布时间:2018-12-12 MYBATIS
从程序运行流程分析:1、解析mybatis配置文件,生成抽象dom树2、逐个解析dom节点,生成对应的Java对象,存储到Configuration类中3、遇到子节点包含其他的配置文件,递归解析4、从数据源中获取session从设计策略角度分析:  API的使用以及配置方式可以参见官网,这里只用来记录和Mybatis使用不当或者相关的坑。...

mybatis源码分析2

发布时间:2020-11-30 MYBATIS SPRING
一、mapper加载与初始化前面说过mybatismapper文件的加载主要有两大类,通过package加载和明确指定的方式。一般来说,对于简单语句来说,使用注解代码会更加清晰,然而Java注解对于复杂语句比如同时包含了构造器、鉴别器、resultMap来说就会非常混乱,应该限制使用,此时应该使用XML文件我们先来回顾一下通过注解配置的典型mapper接口:@Select("select*from...

7.电商项目实战——项目初始化——Mybatis三剑客之Mybatis-generator

发布时间:2021-05-19 MYBATIS 电商项目 学习J2EE
【J2EE学习过程记录】Mybatis-generator根据数据库自动生成pojo、dao和xml文件●pojo里面放的是跟数据库字段一一对应的对象●dao是一个接口,供service调用●xml是dao层接口的实现,sql语句都会写在xml里面通过navicat连接DBMybatis-generator配置1.在pom.xml中配置mybatis-generator(这个在前面已经配置过,配置...

【实战】4-9 Mybatis三剑客之Mybatis-generator

发布时间:2017-10-07 MYBATIS 插件 JAVA服务端实战
前言介绍三个好用的Mybatis插件(包),帮助我们快速设计分页,快速生成dao层等mybatis-generator配置文件这个插件可以根据数据库自动生成pojo、dao、对应的xml文件。pojo中放的是和db字段一一对应的对象(就是model层啦)dao层是供service调用的接口xml是dao层接口的实现,即SQL语句全部写在xml中mybatis-generator插件在maven的p...

Mybatis/Ibatis,数据库操作的返回值

发布时间:2018-06-25 MYBATIS
insert,返回值是:新插入行的主键(primarykey);需要包含语句,才会返回主键,否则返回值为null。update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。queryForObject,返回的是:一个实例对象或null;需要包含语句,并且指明resultMap;queryForList,返回的是:实例对象的列...

实现mysql主从复制、读写分离

发布时间:2021-03-30 LINUX 数据库 中间件 MYSQL PYTHON
目录1.1为什么要做主从复制?1.2主从复制的原理是什么?1.3复制的基本原则1.4复制的最大问题2.实战MySQL主从复制2.1环境说明2.2MySQL主从复制的复制方式2.2.1SBR方式的优缺点2.2.2RBR方式的优缺点2.2.3混合方式2.2.4全局事务标识符GTID2.3实现MySQL主从复制需要进行的配置2.4修改master配置2.5在主机上建立账户并授权slave2.6告知从服务...

《Mybatis源码》第10章 MapperProxy代理

发布时间:2021-11-24 MYBATIS
调用链之前已经介绍到了如何创建DefaultSqlSession,下一步就是通过会话创建对应的Mapper接口了,但是按照我们Java的知识,接口是没有办法直接创建的,那么Mybatis是如何处理这个的?其实这里是采用了代理//我们自己编写的创建获取Mapper的代码CarMappermapper=sqlSession.getMapper(CarMapper.class);DefaultSqlSe...

mybatis-config.xml文件标签介绍

发布时间:2017-03-10 MYBATIS MYSQL
1、配置文件:&lt;?xmlversion="1.0"encoding="UTF-8"?&gt;&lt;!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;&lt;configuration&gt;&lt;!--参数设置--&gt...

MYSQL索引 EXPLAIN

发布时间:2022-05-19 MYSQL DATABASE 数据库
MySQL聚集索引和非聚集索引-爱写bug的程序员-博客园MySQL的Innodb存储引擎的索引分为聚集索引和非聚集索引两大类,理解聚集索引和非聚集索引可通过对比汉语字典的索引。汉语字典提供了两类检索汉字的方式,第一类是拼音检索(前提是知道该汉字读音),比如https://www.cnblogs.com/zsmzsm/p/15596877.html数据库常见知识点总结-最左前缀匹配原则、EXPLA...

MySQL中的redo log和undo log

发布时间:2022-03-25 JAVA MYSQL
MySQL中的redolog和undologMySQL日志系统中最重要的日志为 重做日志redolog 和 归档日志binlog ,后者为MySQLServer层的日志,前者为InnoDB存储引擎层的日志。1重做日志redolog1.1什么是redologredolog用于保证事务的持久性,即ACID中的D。持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障...

java数据库(一)

发布时间:2022-03-25 MYSQL JAVA SQLSERVER 数据库
数据库数据库:       为了方便数据的存储和管理,他将数据按照特定的规则存储在磁盘上,就是一个存储数据的仓库。       通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。为什么学习数据库:        实现数据持久化到本地        (Java程序中产生数据在对象中存储。而对象在内存中存储)        使用完整的管理系统统一管理,可以实现结果化查询数据库管理系统:  ...

Springboot 项目从零搭建

发布时间:2020-05-02 SPRINGBOOT MYSQL SPRING BOOT JAVA
前言:之前看过很多springboot的教程自己从零搭建很少今天搭建成功了就简单的分享给大家如有不足和错误的地方希望大家指出1准备工作需要安装IntelliJIDEA或者eclipse+sts插件来开发IntelliJIDEA下载地址:https://www.jetbrains.com/eclipse下载地址:https://www.eclipse.org/downloads/sts插件下载地址:...

谈谈并发

发布时间:2020-07-12 JAVA MYSQL
谈谈【非】高并发开篇大部分程序员都没有机会到互联网公司中接触高并发,即使身在互联网公司中,也不一定能够亲自操刀高并发代码,但是如果真的让你攻坚一个高并发业务的时候,稍有不慎就会造成严重的并发问题。所以,高并发成了爬上技术金字塔尖的拦路猛虎之一。关于高并发,我将用整个程序员生涯来不断体会理解与分享。今天这篇文章,讲讲初中级程序员在CURD打怪升级初期,怎么去理解【并发】,为将来的【高并发】打下扎实基...

mysql--select

发布时间:2013-08-30 MYSQL
1、查询第一行记录: select*fromtablelimit1 2、查询第n行到第m行记录 select*fromtable1limitn-1,m-n; SELECT*FROMtableLIMIT5,10;返回第6行到第15行的记录 select*fromemployeelimit3,1;//返回第4行 3、查询前n行记录 select*fromtable1limit0,n; 或 select...