需要項目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監控界面 可以看到連接信息等