springboot+mybatis+druid+sqlite/mysql/oracle


搭建springboot+mybatis+druid+sqlite/mysql/oracle附帶測試

 

1.版本

springboot2.1.6

jdk1.8

2.最簡springboot環境

https://www.cnblogs.com/SmilingEye/p/11422536.html

3.pom(sqlite配置)

spring-boot-starter與spring-boot-starter-test

mybatis-spring-boot-starter

druid

sqlite-jdbc

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
  </dependency>
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
  </dependency>
  <dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.21.0.1</version>
  </dependency>
</dependencies>

4.配置application.properties

注意1:sqlite不支持spring.datasource.filters的wall,請去掉

注意2:spring.datasource.type=com.alibaba.druid.pool.DruidDataSource這一行以下的連接池的配置無法被druid加載,需要自己將配置設置到druid里,按照官網配置也不行。

官網配置https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

spring.datasource.driver-class-name=org.sqlite.JDBC
spring.datasource.url=jdbc:sqlite:F:/epgis/program/gis-server/dataserver.pak
spring.datasource.username=
spring.datasource.password= 

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 初始化大小,最小,最大
spring.datasource.initialSize=1
spring.datasource.minIdle=3
spring.datasource.maxActive=20
# 配置獲取連接等待超時的時間
spring.datasource.maxWait=60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
spring.datasource.minEvictableIdleTimeMillis=30000
spring.datasource.validationQuery=select 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打開PSCache,並且指定每個連接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize= 20
# 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆
# sqlite不支持wall,使用sqlite請去掉
spring.datasource.filters=stat,slf4j
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合並多個DruidDataSource的監控數據
#useGlobalDataSourceStat=true

mybatis.mapper-locations=classpath:mybatis/*.xml

5.將application.properties配置設置到druid里

如果不做第5步,數據庫連接池也可以正常使用,但是它是使用的默認配置,非application.properties配置。

注意1:@configurationProperties的prefix里的設置,spring.datasource代表application.properties里的spring.datasource下的值,將自動調用DruidDataSource相同名稱的set方法。

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import com.alibaba.druid.pool.DruidDataSource;

@Configuration
public class DruidConfiguration {
 
    private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);
 
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource1() {
        return new DruidDataSource();
    }
 
    /*@Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }*/
}

6.編寫測試類,驗證數據庫連接池設置成功

package com.epgis.gisserver;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.alibaba.druid.pool.DruidDataSource;

@SpringBootTest
@RunWith(SpringRunner.class)
public class DataSouceTest {

    @Autowired
    DataSource dataSource1;

    @Test
    public void contextDuridLoads() throws SQLException {
        Connection con = dataSource1.getConnection();
        System.err.println("**************");
        System.err.println(dataSource1);
        DruidDataSource dss = (DruidDataSource)dataSource1;
        System.err.println(dss.getName());
        System.err.println(dss.getValidationQuery());
        System.err.println(dss.getTimeBetweenEvictionRunsMillis());
        System.err.println(dss.getMinEvictableIdleTimeMillis());
        // 數據源例如:HikariDataSource(springboot2.x默認),DruidDataSource,dbcp2DataSource
        System.err.println(dataSource1.getClass().getName());
        // 連接例如org.sqlite.SQLiteConnection
        System.err.println(con);
        System.err.println("**************");
        con.close();
    }
}

檢查1:dataSource1對象為DruidDataSource即為數據庫連接池設置成功。

檢查2:dss.getValidationQuery()的值為application.properties里spring.datasource.validationQuery的值"select 'x'",即為其他數據庫連接池配置成功。

 7.編寫及配置mybatis

很多人對這一步驟很熟悉了,在此簡寫。

7.1在開始類上加入@MapperScan("com.epgis.gisserver.**.dao")

7.2編寫dao接口

7.3application.properties里加入xml文件掃描路徑

路徑:mybatis.mapper-locations=classpath:mybatis/*.xml

xml對應位置:

 

7.4編寫xml文件

7.5編寫測試方法

8.替換sqlite為oracle或mysql

8.1pom

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.21.0.1</version>
</dependency>
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

8.2application.properties文件

spring.datasource.driver-class-name=org.sqlite.JDBC
spring.datasource.url=jdbc:sqlite:F:/epgis/program/gis-server/dataserver.pak
spring.datasource.username=
spring.datasource.password= 
復制代碼
復制代碼
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url = jdbc:oracle:thin:@127.0.0.1:1521:orcl
spring.datasource.username = test
spring.datasource.password = test
復制代碼
復制代碼
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mrbird?useUnicode=true&characterEncoding=utf8
spring.datasource.username=test
spring.datasource.password= test


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM