spring boot 使用utf8mb4

本文详细解析了Spring框架下数据源配置的具体参数,包括驱动类名、URL、用户名、密码及连接初始化SQL,适用于使用Spring进行数据库连接配置的开发者。
spring:
  datasource:
    driver-class-name: net.sf.log4jdbc.DriverSpy
    url: jdbc:log4jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=Asia%2fShanghai
    username: admin
    password: admin
    hikari:
      connection-init-sql: set names utf8mb4
### 配置 Spring Boot 使用 UTF8MB4 字符集 为了确保在 Spring Boot 应用程序中正确处理 `UTF8MB4` 编码的数据,需要对 MySQL 数据库以及应用程序中的数据源配置进行适当调整。 #### 修改数据字符集 首先,在创建或修改 MySQL 数据库时应指定其默认字符集为 `utf8mb4` 和校验规则为 `utf8mb4_unicode_ci`。这可以通过 SQL 命令完成: ```sql CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 对于已存在的表和列也需相应更改字符集属性[^1]。 #### 更新 application.properties 文件 接着更新项目的 `application.properties` 或者 `application.yml` 来包含必要的 JDBC URL 参数以支持 `utf8mb4`: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=UTC&autoReconnect=true ``` 这里的关键参数有: - `useUnicode=true`: 启用 Unicode 支持; - `characterEncoding=utf8mb4`: 设置客户端到服务器之间的通信使用的编码方式; - `serverTimezone=UTC`: 解决由于不同地区时间差异引起的问题; 另外还可以通过设置 Hibernate 的方言来进一步优化与特定版本MySQL交互的方式: ```properties spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect ``` 如果使用的是较新的 MySQL 版本,则可以考虑如下替代方案: ```properties spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect ``` 以上措施能够保证由 Spring Data JPA 自动生成的表格及其字段均采用 `utf8mb4` 编码。 #### 自定义 Druid 连接池配置 (可选) 当应用选择了 Apache Druid 作为连接池管理工具时,可以在初始化过程中加入额外命令使每次建立新链接前都执行一次设定字符集的操作: ```java @Bean(destroyMethod = "close", initMethod = "init") public DataSource dataSource() throws SQLException { DruidDataSource datasource = new DruidDataSource(); // ...其他必要配置... String connectionProperties = "druid.initializationFailFast=false;charSet=UTF-8;"; datasource.setConnectProperties(connectionProperties); List<String> sqlList = Arrays.asList("SET NAMES utf8mb4"); datasource.setInitConnectionSqls(sqlList); return datasource; } ``` 这段代码片段展示了如何利用 Java Bean 定义来自定义 Druid 数据源实例化过程,并指定了初始连接字符串及一系列预设查询语句用于强制设置会话级别的字符集为 `utf8mb4`[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值