1. 數據庫支持utf8mb4
創(chuàng)建數據庫時選擇字符集:utf8mb4
2. 表支持utf8mb4
```
DROP TABLE IF EXISTS `mytable`;
CREATE TABLE `mytable` (
`uid` bigint(20) NOT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
3. SpringBoot hibernate連接池的設置支持utf8mb4
在配置文件**application-rds.properties**中添加一行:
```
spring.datasource.connectionInitSqls=SET NAMES utf8mb4
```
在**RdsConfiguration.java**中設置連接池的字符集:
```
...
import javax.sql.DataSource;
import java.util.Collections;
import java.util.Properties;
import java.util.StringTokenizer;
@Configuration
public class RdsConfiguration {
...
@Value("${spring.datasource.connectionInitSqls}")
private String connectionInitSqls;
...
@Bean(name = "dbDataSource")
@Qualifier(value = "dbDataSource")
@Primary
public DataSource dbDataSource() {
return dataSource(dburl);
}
private DataSource dataSource(String url) {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
druidDataSource.setInitialSize(initialSize);
druidDataSource.setMinIdle(minIdle);
druidDataSource.setMaxActive(maxActive);
druidDataSource.setMaxWait(maxWait);
druidDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
druidDataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
druidDataSource.setTestWhileIdle(testWhileIdle);
druidDataSource.setTestOnBorrow(testOnBorrow);
druidDataSource.setTestOnReturn(testOnReturn);
druidDataSource.setPoolPreparedStatements(poolPreparedStatements);
druidDataSource.setValidationQuery(validationQuery);
//druidDataSource.setFilters(filters);
// 支持表情
StringTokenizer tokenizer = new StringTokenizer(connectionInitSqls, ";");
druidDataSource.setConnectionInitSqls(Collections.list(tokenizer)); //重點設置該參數
return druidDataSource;
}
...
```