`

mybatis插入数据乱码问题排查与解决

阅读更多

   今天有个同事将mysql库迁移后回滚测试发现插入数据乱码。

   由于代码基本上改动,可以断定是数据库的迁移引起来的问题,于是我就在mybatis里面直接执行sql的地方加上断点,发现要执行的sql就已经乱码。

    

     然后我就怀疑是否是入参数的时候是乱码,经过发现在设置参数的时候object的值均正常。

    也就是SimpleExcutor的doUpdate函数:

     

    后来经过查看数据的编码,发现两个数据库的编码格式不相同,

    参考编码的sql如下:

     

  show variables like '%character%';

 

    
       
   

       后来发现它的连接字符串如下:
    
   xxxx.jdbc.url=jdbc:mysql://192.168.14.203:3306/xxxx?useUnicode=true&characterEncoding=UTF-8
 
      后来经过测试:
       原因是properties里面不能将&转译
      下面的写法就可以:
      
  xxxx.jdbc.url=jdbc:mysql://192.168.14.203:3306/xxxx?useUnicode=true&characterEncoding=UTF-8
 
       但是如果在xml里面的话,要转译
     
 xxxx.jdbc.url=jdbc:mysql://192.168.14.203:3306/xxxx?useUnicode=true&characterEncoding=UTF-8
 
     但是有一个问题,为什么同样的代码在一个数据库上可以,换一个就不行了呢? 原因是第一个数据库所以的编码默认都是utf8,所以参数写错了也不会有影响,而第二个数据库编码格式有问题的时候,参数就要起效果了,不对的时候就会引起问题。 所以还是希望大家在安装数据库的时候,将默认编码设置成utf8.
 
    参考资料
  • 大小: 38.8 KB
  • 大小: 27.9 KB
  • 大小: 8.2 KB
0
0
分享到:
评论

相关推荐

    mybatis乱码的解决方法

    在使用MyBatis框架进行数据操作时,可能会遇到字符编码问题,导致乱码现象。这里主要探讨的是关于MyBatis(以及它...总的来说,解决MyBatis乱码问题的关键在于确保数据传输的每个环节都使用一致且兼容中文的字符编码。

    mybatis-generator 解决中文注释乱码

    如果是eclipse工具,直接生成的,则替换:plugins/org.mybatis.generator.core_1.3.2*****.jar,如果是其他方式则直接替换掉官方的mybatis-generator-core1.3.2.jar即可

    MyBatis插入数据.txt

    添加映射—— <!... PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> insert into stu_tbl(name,age) values(#{name},#{age}) </mapper>

    Java实现mybatis批量插入数据到Oracle

    本篇文章将详细介绍如何利用Java和MyBatis实现批量插入数据到Oracle数据库中。 首先,我们需要理解Oracle数据库的一些基本概念。Oracle是世界上最流行的商业关系型数据库管理系统之一,以其强大的功能和高可靠性而...

    详解MyBatis直接执行SQL查询及数据批量插入

    总结起来,MyBatis提供了一种灵活的方式,允许开发者直接执行SQL查询和批量插入数据。在使用时,需要注意SQL字符串的编写规范,理解#{}和${}的区别,以及合理利用`<foreach>`标签进行批量操作。这使得MyBatis不仅...

    jsq+mybatis+mysql中文乱码解决方案

    中文乱码是 JSQ、MyBatis 和 MySQL 集成时常见的问题,解决这个问题需要从多方面入手。本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 在 JSP 中,中文乱码的原因主要是...

    MyBatis3的使用例子(解决乱码问题)

    本篇将详细讲解如何在MyBatis3中进行基本的使用,并重点解决可能出现的乱码问题。 一、MyBatis3简介 MyBatis3是一个基于Java的持久层框架,它简化了数据库操作,通过XML或注解方式配置和映射原生信息,将接口和Java...

    mybatis 插入数据,打开与关闭连接池的插入性能对比

    本文将深入探讨MyBatis在插入数据时,使用连接池与不使用连接池的性能差异,帮助开发者理解优化数据库操作的重要性。 首先,我们需要了解连接池的概念。数据库连接池是在应用服务器启动时就建立一定数量的数据库...

    mybatis连接MySQL8出现的问题解决方法

    "mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...

    最新Mybatis插入数据返回自增主键详细配置

    Mybatis插入数据返回自增主键 Mybatis插入数据以后只会返回影响的数据库行数,如果是插入一条数据成功则返回1,失败返回零,插入多条返回插入成功的数量。 通过注解或者xml配置无法直接返回自增的主键。Mybatis插入...

    spring boot mybatis多数据源最简解决方案

    本文将深入探讨如何实现Spring Boot结合MyBatis的多数据源最简解决方案。 首先,我们来理解多数据源的需求。在大型分布式系统中,通常采用数据库主从复制或者分库分表策略来提高系统的可扩展性和性能。主从模式可以...

    mybatis 存储数据对象数据自动加解密插件

    针对这一需求,"mybatis 存储数据对象数据自动加解密插件"应运而生,它旨在为Mybatis提供一个便捷的数据加解密解决方案,以确保数据在存储和检索过程中的安全性。 该插件的工作原理是在数据被持久化到数据库之前...

    Mybatis 处理 CLOB、BLOB 类型数据

    在测试方法中,可以使用如下方式插入数据: ```java public void test_insertUserPic(){ String name = "tom"; String bio = "Can be a very long string"; byte[] pic = null; try { // 读取用户图片 // ......

    MyBatis插入数据返回主键的介绍

    MyBatis插入数据返回主键的介绍 MyBatis是一个流行的持久层框架,它提供了许多实用的功能,包括插入数据返回主键的功能。在本文中,我们将详细介绍MyBatis插入数据返回主键的实现方法。 Service层实现 在Service...

    mybatis generator 1.3.2生成中文注释,解决中午乱码 eclips插件

    mybatis generator 1.3.2生成中文注释,解决中午乱码 eclips插件,网上很多人都说修改mybatis 的插件源码,可是很少有人贡献出来,今天整理一下,贡献出来,大家直接安装后就可以使用,并且附上了generatorConfig....

    Mybatis与JDBC批量插入MySQL数据库性能测试

    在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...

    springBoot-mybatis-redis 整合解决乱码问题.rar

    这个压缩包"springBoot-mybatis-redis 整合解决乱码问题.rar"似乎提供了一个示例工程,展示了如何解决在整合过程中可能出现的编码问题。以下是对这些技术以及整合过程中的关键知识点的详细解释。 1. **Spring Boot*...

    springboot mybatis多数据源加事务嵌套

    springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...

    Java使用Mybatis将数据批量插入到Oracle

    Java实现使用Mybatis将数据批量插入到Oracle数据库,并且可以使用Oracle序列来生成主键

Global site tag (gtag.js) - Google Analytics