上篇文章咱們介紹了SpringBoot和MyBatis的整合,能夠說很是簡單快捷的就搭建了一個web項目,可是在一個真正的企業級項目中,可能咱們還須要更多的更加完善的框架才能開始真正的開發,好比鏈接池、分頁插件等。下面咱們就來看看在SpringBoot中怎麼快速的集成這些東西。java
1、新建一個項目,引入相關依賴,加粗的是本項目中新引入的依賴mysql
<!-- 單元測試依賴 start --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!-- 單元測試依賴 end --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- 數據庫鏈接池 start --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency> <!-- 數據庫鏈接池 end --> <!-- mysql鏈接 start --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- mysql鏈接 end --> <!-- pagehelper分頁 start --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency> <!-- pagehelper分頁 start -->
2、爲了項目配置的整潔性,在SpringBoot-mybatis的項目基礎上,我將數據庫和MyBatis的相關操做進行了統一配置,使得配置根據清晰簡單,項目結構以下git
後期項目會將全部的配置放在configuration包下,具體數據庫配置以下github
@Configuration @MapperScan(value = "com.somta.springboot.dao") public class MyBatisConfiguration { @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Bean public DruidDataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(this.driverClassName); dataSource.setUrl(this.url); dataSource.setUsername(this.username); dataSource.setPassword(this.password); dataSource.setInitialSize(5); dataSource.setMaxActive(30); dataSource.setMinIdle(5); dataSource.setMaxWait(60000); return dataSource; } @Bean(name="sqlSessionFactory") public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws IOException { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml")); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/**/Mysql_*Mapper.xml")); return sqlSessionFactoryBean; } }
一、將Dao層掃描和MyBatis文件的掃描統一放在配置文件中web
二、使用了阿里開源的Druid鏈接池,SpringBoot默認使用的鏈接池是Hikari,二者之間的優缺點後續將會單獨介紹,配置成功後啓動項目,咱們能夠看到項目當前使用的是那種鏈接池,以下圖:
spring
三、在src/main/resources下面新增了一個mybatis-config文件,該文件配置了MyBatis與數據庫的相關信息,和PageHelper的相關配置,注意:(在不一樣的PageHelper版本中PageHelper的攔截器發生了變化,PageHelper-4.1.1中使用的是com.github.pagehelper.PageHelper,在PageHelper-5.1.2中使用的攔截器是com.github.pagehelper.PageInterceptor,具體小版本以官網公告爲準)sql
<?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> <properties> <property name="dialect" value="mysql"/> </properties> <settings> <!-- 這個配置使全局的映射器啓用或禁用緩存。系統默認值是true --> <setting name="cacheEnabled" value="true"/> <!-- 全局啓用或禁用延遲加載。當禁用時,全部關聯對象都會即時加載。 系統默認值是true --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 容許或不容許多種結果集從一個單獨的語句中返回(須要適合的驅動)。 系統默認值是true --> <setting name="multipleResultSetsEnabled" value="true"/> <!--使用列標籤代替列名。不一樣的驅動在這方便表現不一樣。參考驅動文檔或充分測試兩種方法來決定所使用的驅動。 系統默認值是true --> <setting name="useColumnLabel" value="true"/> <!--容許 JDBC 支持生成的鍵。須要適合的驅動。若是設置爲 true 則這個設置強制生成的鍵被使用,儘管一些驅動拒絕兼容但仍然有效(好比 Derby)。 系統默認值是false --> <setting name="useGeneratedKeys" value="false"/> <!--配置默認的執行器。SIMPLE 執行器沒有什麼特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 系統默認值是SIMPLE --> <setting name="defaultExecutorType" value="SIMPLE"/> <!--設置超時時間,它決定驅動等待一個數據庫響應的時間。 系統默認值是null --> <setting name="defaultStatementTimeout" value="25000"/> <!--設置字段和類是否支持駝峯命名的屬性。 系統默認值是false --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 打印查詢語句 --> <!-- <setting name="logImpl" value="STDOUT_LOGGING" /> --> </settings> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 該參數默認爲false --> <!-- 設置爲true時,會將RowBounds第一個參數offset當成pageNum頁碼使用 --> <!-- 和startPage中的pageNum效果同樣--> <property name="offsetAsPageNum" value="true"/> <!-- 該參數默認爲false --> <!-- 設置爲true時,使用RowBounds分頁會進行count查詢 --> <property name="rowBoundsWithCount" value="true"/> <!-- 設置爲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"/> <!-- 支持經過Mapper接口參數來傳遞分頁參數 --> <property name="supportMethodsArguments" value="false"/> <!-- always老是返回PageInfo類型,check檢查返回類型是否爲PageInfo,none返回Page --> <property name="returnPageInfo" value="none"/> </plugin> </plugins> </configuration>
3、PageHelper的使用方法數據庫
PageHelper.startPage(pageNum, pageSize)只做用離它最近的一個查詢,更多與分頁相關的信息咱們均可以在page對象中拿到,徹底能夠知足各類狀況下的分頁查詢。緩存
@Test public void testQueryUserList() throws Exception { int pageNum=1; int pageSize=10; Page<User> page = PageHelper.startPage(pageNum, pageSize); userDao.queryUserList(); System.out.println("總共條數:"+page.getTotal()); for (User user : page.getResult()) { System.out.println(user.getName()); } }
看到如圖所示的輸出表示分頁插件配置成功了springboot
Git代碼地址:https://gitee.com/Somta/Sprin...
原文地址:http://somta.com.cn/#/blog/vi...
本文由明天的地平線創做,如想了解更多更詳細的內容,請關注一下公衆號,公衆號內將進行最新最實時的更新!