springboot-pagehelper-druid+mybatise+oracle 搭建

需要項目demo 可以去我的資源裏面下載!

https://download.csdn.net/download/qq_39477018/11452122   

我的項目中get set方法使用了lombok的註解  需要自己在idea中裝一下lombok插件 

新建一個springboot項目 

pom文件添加pagehelper、druid、mybatise 依賴

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.0</version>
</dependency>
<dependency>
   <groupId>oracle</groupId>
   <artifactId>ojdbc7</artifactId>
   <version>12</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.13</version>
</dependency>
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>4.1.6</version>
</dependency>

在application.properties中添加數據庫 以及連接池的配置


#數據庫
spring.datasource.url=jdbc:oracle:thin:@xxxxxxxxxxxxxx
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
        

## druid連接池的設置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
##################    連接池配置    ################
#連接池建立時創建的初始化連接數
spring.datasource.druid.initial-size=2
#連接池中最大的活躍連接數
spring.datasource.druid.max-active=5
#連接池中最小的活躍連接數
spring.datasource.druid.min-idle=3
#最大空閒連接
spring.datasource.druid.max-idle=3
# 配置獲取連接等待超時的時間
spring.datasource.druid.max-wait=60000
#是否在自動回收超時連接的時候打印連接的超時錯誤
spring.datasource.druid.log-abandoned=true
#是否自動回收超時連接
spring.datasource.druid.remove-abandoned=true
#超時時間(以秒數爲單位)
spring.datasource.druid.remove-abandoned-timeout=180
# 打開PSCache,並且指定每個連接上PSCache的大小
#spring.datasource.druid.pool-prepared-statements=true
#spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#spring.datasource.max-open-prepared-statements= #和上面的等價
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.validation-query-timeout=30000
#是否在獲得連接後檢測其可用性
spring.datasource.druid.test-on-borrow=true
#是否在連接放回連接池後檢測其可用性
spring.datasource.druid.test-on-return=false
#是否在連接空閒一段時間後檢測其可用性
spring.datasource.druid.test-while-idle=true
#spring.datasource.time-between-eviction-runs-millis=
#spring.datasource.min-evictable-idle-time-millis=
#spring.datasource.max-evictable-idle-time-millis=
#每隔五分鐘檢測空閒超過10分鐘的連接
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.time-between-eviction-runs-millis=120000


# mybatis
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
# log
logging.path=proglog/backend
debug=false

項目結構

 

配置druid的監控信息DruidConfig

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2019/7/18.
 */

@Configuration

//@MapperScan(basePackages = "com.example.demo.dao")
public class DruidConfig {

    //下面的1和2是配置Druid的監控
    //1、配置一個管理後臺的Servlet
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String,String> initParams = new HashMap<>();
        initParams.put("loginUsername","admin");//登錄druid監控的賬戶
        initParams.put("loginPassword","admin");//登錄druid監控的密碼
        initParams.put("allow","");//默認就是允許所有訪問
        initParams.put("deny","192.168.15.21");//黑名單的IP

        bean.setInitParameters(initParams);
        return bean;
    }
    //2、配置一個web監控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return  bean;
    }

}
PageHelper配置

在mybatis-config.xml 中配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="jdbcTypeForNull" value="NULL"/>
        <!--sql語句顯示-->
        <setting name="logImpl" value="STDOUT_LOGGING" />
        <!-- 使全局的映射器啓用或禁用緩存。 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 全局啓用或禁用延遲加載。當禁用時,所有關聯對象都會即時加載。 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 當啓用時,有延遲加載屬性的對象在被調用時將會完全加載任意屬性。否則,每種屬性將會按需要加載。 -->
        <setting name="aggressiveLazyLoading" value="true"/>
        <!-- 是否允許單條sql 返回多個數據集  (取決於驅動的兼容性) default:true -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!-- 是否可以使用列的別名 (取決於驅動的兼容性) default:true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 允許JDBC 生成主鍵。需要驅動器支持。如果設爲了true,這個設置將強制使用被生成的主鍵,有一些驅動器不兼容不過仍然可以執行。  default:false  -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 指定 MyBatis 如何自動映射 數據基表的列 NONE:不隱射 PARTIAL:部分  FULL:全部  -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!-- 這是默認的執行類型  (SIMPLE: 簡單; REUSE: 執行器可能重複使用prepared statements語句;BATCH: 執行器可以重複執行語句和批量更新)  -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!-- 使用駝峯命名法轉換字段。 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- 設置本地緩存範圍 session:就會有數據的共享  statement:語句範圍 (這樣就不會有數據的共享 ) defalut:session -->
        <setting name="localCacheScope" value="SESSION"/>
        <!-- 設置但JDBC類型爲空時,某些驅動程序 要指定值,default:OTHER,插入空值時不需要指定類型 -->
        <setting name="jdbcTypeForNull" value="NULL"/>
    </settings>

    <typeAliases>
        <package name="com.example.demo.entity"></package>
    </typeAliases>
    
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!--指明數據庫 4.0.0以後不需要設置此屬性-->
            <property name="dialect" value="oracle"/>
            <!-- 該參數默認爲false -->
            <!-- 設置爲true時,會將RowBounds第一個參數offset當成pageNum頁碼使用 -->
            <!-- 和startPage中的pageNum效果一樣-->
            <property name="offsetAsPageNum" value="false"/>
            <!-- 該參數默認爲false -->
            <!-- 設置爲true時,使用RowBounds分頁會進行count查詢 -->
            <property name="rowBoundsWithCount" value="false"/>
            <!-- 設置爲true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 -->
            <!-- (相當於沒有執行分頁查詢,但是返回結果仍然是Page類型)-->
            <property name="pageSizeZero" value="true"/>
            <!-- 3.3.0版本可用 - 分頁參數合理化,默認false禁用 -->
            <!-- 啓用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 -->
            <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會返回空數據 -->
            <property name="reasonable" value="false"/><!--頁碼<=0 查詢第一頁,頁碼>=總頁數查詢最後一頁-->
            <!-- 3.5.0版本可用 - 爲了支持startPage(Object params)方法 -->
            <!-- 增加了一個`params`參數來配置參數映射,用於從Map或ServletRequest中取值 -->
            <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默認值 -->
            <!-- 不理解該含義的前提下,不要隨便複製該配置 -->
             <property name="params" value="pageNum=start;pageSize=limit;"/>
            <!--//支持通過 Mapper 接口參數來傳遞分頁參數-->
            <property name="supportMethodsArguments" value="false"/>
            <!-- always總是返回PageInfo類型,check檢查返回類型是否爲PageInfo,none返回Page -->
            <property name="returnPageInfo" value="none"/>
        </plugin>
    </plugins>
</configuration>

 我們運用註解進行查詢的話需要在application啓動類中添加

添加@MapperScan(“com.example.demo.dao”)註解以後,com.example.demo.dao包下面的接口類,在編譯之後都會生成相應的實現類


 

新建xml 和實體bean 和對應的mapper查詢接口

標紅的地方名字需要對應

方法名字需要跟xml中定義的id保持一致

新建測試的controller

啓動項目 進行測試

訪問druid監控界面 可以看到連接信息等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章