HikariCP的编码设置

HikariCP可以说是目前速度最快的数据源了。然而该数据源不像之前的数据源(如Druid或者C3P0)那样默认无需设置编码,因此需要额外针对编码做一些设置,否则就会出现乱码问题。

方法一:在对数据源进行初始化时进行设置。

清单1.传统方式初始化数据源

HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");

//下面两行是重点
dataSource.addDataSourceProperty("useUnicode", "true");
dataSource.addDataSourceProperty("characterEncoding", "utf8");
return dataSource;

清单2.初始化数据源编码——与Spring 4整合

package org.fhp.hikaricpdemo.config;


import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;


import javax.sql.DataSource;


@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
@EnableTransactionManagement
public class DaoConfig {


    @Bean(name="daoDataSource")
    public DataSource daoDataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");


        //下面两行是重点
        dataSource.addDataSourceProperty("useUnicode", "true");
        dataSource.addDataSourceProperty("characterEncoding", "utf8");
        return dataSource;
    }


    @Bean
    public DataSourceTransactionManager transactionManager(@Qualifier("daoDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }


}

方法二:在JDBC的URL中指定编码

清单3.在URL中指定编码

HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("root");

//重点是这一行
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306test?useUnicode=true&characterEncoding=UTF-8");
return dataSource;


清单4.URL中指定编码——与Spring 4整合

package org.fhp.hikaricpdemo.config;

import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
@EnableTransactionManagement
public class DaoConfig {

    @Bean(name="daoDataSource")
    public DataSource daoDataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

        //重点是这一行
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8");

        return dataSource;
    }

    @Bean
    public DataSourceTransactionManager transactionManager(@Qualifier("daoDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个流行的Java框架,它简化了微服务的开发流程。MyBatis是一个优秀的持久层框架,用于将Java对象映射到数据库。在Spring Boot中集成MyBatis,你可以快速地管理数据访问和持久化。以下是使用Java配置Spring Boot和MyBatis的基本步骤: 1. 添加依赖:在你的`pom.xml`或`build.gradle`文件中添加Spring Boot的Web和MyBatis的依赖。 ```xml <!-- Maven --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <!-- Gradle (Kotlin) --> implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.mybatis.spring.boot:mybatis-spring-boot-starter") ``` 2. 配置数据源(如果你使用JPA,这一步通常是默认的): ```java @Bean public DataSource dataSource() { // 使用HikariCP、Druid或其他数据源配置 return new HikariDataSource(); } ``` 3. 配置MyBatis: ```java @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); return factoryBean.getObject(); } ``` 4. 定义Mapper接口: ```java public interface UserMapper { List<User> getUsers(); } ``` 5. 创建Mapper XML映射文件: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="getUsers" resultType="com.example.demo.model.User"> SELECT * FROM users; </select> </mapper> ``` 6. 注册Mapper: ```java @Autowired private SqlSessionFactory sqlSessionFactory; @Autowired private UserMapper userMapper; public List<User> getUsers() { return userMapper.getUsers(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值