1. 程式人生 > >Springboot整合hikaricp mybatis

Springboot整合hikaricp mybatis

1.新增Maven依賴

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
        </includes>
    </resource>
</resources>

2.db.properties配置

dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
dataSource.user=root
dataSource.password=root
dataSource.cachePrepStmts=true
dataSource.prepStmtCacheSize=25
dataSource.prepStmtCacheSqlLimit=204
dataSource.databaseName=test
dataSource.serverName=127.0.0.1
dataSource.portNumber=3306
dataSource.minimumIdle=1
dataSource.maximumPoolSize=5

3.DataSourceConfig配置

   @Configuration
   @PropertySources(value = {@PropertySource("classpath:db.properties")})
   public class DataSourceConfig {
       @Autowired
       private Environment environment;
   
       @Bean("dataSource")
       public DataSource getDataSource() {
           Properties props = new Properties();
           props.setProperty("dataSourceClassName", environment.getRequiredProperty("dataSourceClassName"));
           props.setProperty("dataSource.user", environment.getRequiredProperty("dataSource.user"));
           props.setProperty("dataSource.password", environment.getRequiredProperty("dataSource.password"));
           props.setProperty("dataSource.databaseName", environment.getRequiredProperty("dataSource.databaseName"));
           props.setProperty("dataSource.serverName", environment.getRequiredProperty("dataSource.serverName"));
           props.setProperty("dataSource.portNumber", environment.getRequiredProperty("dataSource.portNumber"));
           props.setProperty("dataSource.cachePrepStmts", environment.getRequiredProperty("dataSource.cachePrepStmts"));
           props.setProperty("dataSource.prepStmtCacheSize", environment.getRequiredProperty("dataSource.prepStmtCacheSize"));
           props.setProperty("dataSource.prepStmtCacheSqlLimit", environment.getRequiredProperty("dataSource.prepStmtCacheSqlLimit"));
           props.setProperty("dataSource.useUnicode", "true");
           props.setProperty("dataSource.characterEncoding", "utf8");
           HikariConfig hikariConfig = new HikariConfig(props);
           String minimumIdle = environment.getRequiredProperty("dataSource.minimumIdle");
           String maximumPoolSize = environment.getRequiredProperty("dataSource.maximumPoolSize");
   
           if (StringUtils.isNotBlank(minimumIdle)) {
               hikariConfig.setMaximumPoolSize(Integer.parseInt(minimumIdle));
           }
           if (StringUtils.isNotBlank(maximumPoolSize)) {
               hikariConfig.setMinimumIdle(Integer.parseInt(maximumPoolSize));
           }
           return new HikariDataSource(hikariConfig);
       }
   }

4.MyBatisConfig配置

   @Configuration
   @MapperScan("com.boomsecret.dao.mapper")
   public class MyBatisConfig implements TransactionManagementConfigurer {
   
       @Autowired
       @Qualifier("dataSource")
       private DataSource dataSource;
   
       @Bean(name = "sqlSessionFactory")
       public SqlSessionFactory sqlSessionFactoryBean() {
           SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
           bean.setDataSource(dataSource);
           try {
               return bean.getObject();
           } catch (Exception e) {
               e.printStackTrace();
               throw new RuntimeException(e);
           }
       }
   
       @Bean
       public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
           return new SqlSessionTemplate(sqlSessionFactory);
       }
   
       @Override
       public PlatformTransactionManager annotationDrivenTransactionManager() {
           return new DataSourceTransactionManager(dataSource);
       }
   }

原始碼 https://gitee.com/jsjack_wang/springboot-demo dev-hikaricp-mybatis分支