單手擼了個springboot+mybatis+druid
本文旨在用最通俗的語言講述最枯燥的基本知識
最近身邊的程式員掀起了學習springboot的熱潮,說什麼學會了springboot在大街上就可以橫著走、什麼有了springboot媽媽再也不擔心我的程式設計了、什麼BAT都喜歡的框架…聽得作者那個心癢癢的,於是找了個時間,下載了個idea來玩一波springboot,對了…用springboot最好用idea,如果你還在用eclipse,刪了吧。
在這裡解釋一下為什麼是springboot+mybatis+druid,是因為作者認為但凡任何一個有靈魂的專案,都少不了資料庫,作者不喜歡用JPA那種混SQL的語法,因此選了mybatis,而Druid是阿里系(真香~)的一種資料庫連線池框架,在上一個專案作者用的屢試不爽,因此打算繼續用,為啥屢試不爽?看文末吧。
文章提綱:
- 建立springboot工程
- 配置pom.xml
- 配置資料來源
- 設定mybatis
- hello world
- 設定Druid監控配置
1. 建立springboot工程
只要你有idea,建立一個springboot工程,就跟捏死一個螞蟻一樣簡單,因為idea裡深度集成了對springboot專案的支援,你直接不停的next到最後,它就會幫你創建出一個springboot工程。
-
首先開啟idea->Create New project->選擇專案型別:這裡選擇spring initializr,然後next。
-
建立專案,填寫專案名稱,注意:不要能駝峰寫法,可以用中橫線,填寫完畢後繼續next。
-
選擇依賴,所謂依賴就是你在設計這個專案的框架時,分析這個專案需要用到哪些jar或者元件,比如快取要用到Redis,資料庫要用到MySQL等…這裡因為演示專案,就不選擇太多其它亂七八糟的依賴了。
-
選好依賴之後,又是一路狂點next,直到最後finish一下,一個springboot專案就建立好了。
2. 配置pom.xml
想想,我們需要哪些jar?
資料庫要用到mybatis,資料庫連線池要用到Druid、MySQL橋接器要用到mysql-connector,因此要maven倉庫(點我去倉庫)中找到搜尋這些pom加進去。注意,mybatis要用mybatis-spring-boot-starter。
1<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 2<dependency> 3<groupId>mysql</groupId> 4<artifactId>mysql-connector-java</artifactId> 5<version>5.1.6</version> 6</dependency> 7<!-- https://mvnrepository.com/artifact/com.alibaba/druid --> 8<dependency> 9<groupId>com.alibaba</groupId> 10<artifactId>druid</artifactId> 11<version>1.1.10</version> 12</dependency> 13<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> 14<dependency> 15<groupId>org.mybatis.spring.boot</groupId> 16<artifactId>mybatis-spring-boot-starter</artifactId> 17<version>1.3.2</version> 18</dependency> 複製程式碼
把上面這些pom放到pom.xml的dependencies中

細心的老鐵會發現,MySQL的version裡的內容是紅色的,這是什麼原因呢?
這是因為我們引入pom時,這些版本的jar在本地maven倉庫還沒有,而Druid的pom裡的version沒有顯示紅色,是因為之前的專案用到了這個版本的Druid,已經被下載到本地Maven倉庫裡了。
因此我們需要把本地沒有的jar下載到本地倉庫,右鍵pom.xml彈出選單,選擇Maven,彈出選單選擇reimport

Reimport過程中再idea底部會有進度條顯示,等進度條消失,在觀察pom.xml,紅色已經消失,說明依賴已經裝備完成。
- 配置資料來源
接下來就是要多springboot專案做一個全域性配置,預設會在src->main->resource目錄下生產空白檔案application.properties,作者喜歡用yml因此直接改名成yml即可。
首先是資料來源的配置,下面是一份資料來源的配置,每個引數的解釋都寫了註釋,因此讀者可以直接複製一下內容進去,只需要改一下url、username、password
1spring: 2#profiles: dev 3messages: 4basename: i18n/Messages,i18n/Pages 5datasource: 6type: com.alibaba.druid.pool.DruidDataSource# 配置當前要使用的資料來源的操作型別 7driver-class-name: org.gjt.mm.mysql.Driver# 配置MySQL的驅動程式類 8url: jdbc:mysql://localhost:3306/wkt_stat# 資料庫連線地址 9username: root# 資料庫使用者名稱 10password: root# 資料庫連線密碼 11dbcp2:# 進行資料庫連線池的配置 12min-idle: 5# 資料庫連線池的最小維持連線數 13initial-size: 5# 初始化提供的連線數 14max-total: 5# 最大的連線數 15max-wait-millis: 200# 等待連接獲取的最大超時時間 複製程式碼
4. 設定mybatis
繼續在application.yml中設定mybatis,mybatis的配置也簡單,
主要是為了設定mybatis的配置檔案已經mapper檔案所在。
- 首先在resource目錄下建立一個mybatis-config.xml檔案,檔案內容為:
1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE configuration 3PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4"http://mybatis.org/dtd/mybatis-3-config.dtd"> 5<configuration> 6<mappers> 7</mappers> 8</configuration> 複製程式碼
-
在main包中的根目錄下建立一個存放mapper實體的資原始檔,在resource檔案下建立一個資料夾mapper用來存放mapper的xml檔案。
-
配置好資原始檔路徑之後,就可以在application.yml中加入mybatis的配置了,如下是一個mybatis的配置內容:
1#mybatis的mapper配置檔案 2mybatis: 3config-location: classpath:mybatis-config.xml# mybatis配置檔案所在路徑 4#mapper-locations: classpath:mapper/*.xml# 所有的mapper對映檔案 5type-aliases-package: com.becl.dao.mapper # 定義所有操作類的別名所在包 6debug: true 複製程式碼
最終application.yml的內容如下圖:

- 此時需要有一個數據庫表來做測試,我們在資料庫建立一個表,並且插入一條資料:
1CREATE TABLE Memeber ( 2`id`int(11) NOT NULL AUTO_INCREMENT , 3`name`varchar(255) NULL , 4PRIMARY KEY (`id`) 5); 6 7INSERT INTO memeber VALUES(1,"jas") 複製程式碼
- 在mapper包中建立Memeber的mapper介面:
1public interface MemeberMapper { 2/** 3* 根據ID獲取記錄 4* @param id 5* @return 6*/ 7public Map findObjectById(Integer id); 8} 複製程式碼
- 在resource中的mapper資料夾建立memberMapper.xml,並且在mapper中增加一個findObjectById的SQL查詢語句。
1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE mapper 3PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5<!--對映檔案配置,namespace指向介面--> 6<mapper namespace="com.example.mybatisanddruid.mapper.MemeberMapper"> 7#根據ID查詢記錄 8<select id="findObjectById" parameterType="Integer" resultType="Map"> 9select * from memeber where id = #{value} 10</select> 11</mapper> 複製程式碼
5. hello world
走到這一步,基本上已經是大功告成了,我們來寫一個測試類試試,在根目錄建立一個controller的包,在包中建立一個Java類,如下:
1@Controller 2@RequestMapping("/test") 3public class TestController { 4@Resource 5private MemeberMapper memeberMapper=null; 6 7@RequestMapping("/one") 8@ResponseBody 9public Map testdb(){ 10returnmemeberMapper.findObjectById(1); 11} 12} 複製程式碼
建立完之後,我們執行專案,找到啟動類MybatisAndDruidApplication右鍵run,發現報錯,提示沒有掃描到mapper包,為什麼呢?那是mapper需要手動在啟動類中加入:
1@MapperScan("com.example.mybatisanddruid.mapper") 複製程式碼
這樣啟動類就變成:
1@SpringBootApplication 2@MapperScan("com.example.mybatisanddruid.mapper") 3public class MybatisAndDruidApplication { 4 5public static void main(String[] args) { 6SpringApplication.run(MybatisAndDruidApplication.class, args); 7} 8} 複製程式碼
再次執行,沒有報錯,在瀏覽器輸入:http://localhost:8888/test/one
輸出了ID為1的記錄:
1{"name":"jas","id":1} 複製程式碼
由此可見,springboot-mybatis已經搭建成功,此時有人會問,那Druid呢?
-
設定Druid監控配置
druid的使用需要做一些配置,現在我們來在根目錄下建立一個包config,在config包中間建立一個叫做DruidConfig.java,並且在裡寫入下面的內容:
1@Configuration 2public class DruidConfig { 3@Bean 4public ServletRegistrationBean druidServlet() { // 主要實現WEB監控的配置處理 5ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 進行druid監控的配置處理操作 6servletRegistrationBean.addInitParameter("allow", 7"127.0.0.1,192.168.1.159"); // 白名單 8servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名單 9servletRegistrationBean.addInitParameter("loginUsername", "stat"); // 使用者名稱 10servletRegistrationBean.addInitParameter("loginPassword", "Wkt_sTat_1031"); // 密碼 11servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置資料來源 12return servletRegistrationBean ; 13} 14@Bean 15public FilterRegistrationBean filterRegistrationBean() { 16FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ; 17filterRegistrationBean.setFilter(new WebStatFilter()); 18 19filterRegistrationBean.addUrlPatterns("/*"); // 所有請求進行監控處理 20filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*"); 21return filterRegistrationBean ; 22} 23@Bean 24@ConfigurationProperties(prefix = "spring.datasource") 25public DataSource druidDataSource() { 26return new DruidDataSource(); 27} 28 29} 複製程式碼
配置中的內容就不一一細講, 有興趣的直接百度一下druid就出來很多答案了,現在重新執行一下專案,執行成功之後,在瀏覽器中輸入:http://localhost:8888/druid
這時候,druid監控平臺就出現了

此時我們輸入在DruidConfig中設定的loginUsername和loginPassword點選登入,一個完整的druid監控管理平臺就呈現在我們啦~

Druid非常強大,在這裡你可以檢視SQL的執行情況、慢SQL、API請求情況等,根據這些可以做一些效能的調優,至於詳細的用法,就靠大家自行學習啦~
如果有老鐵需要專案原始碼,請加我微信:sisi-ceo。
覺得本文對你有幫助?請分享給更多人
關注「程式設計無界」,提升裝逼技能
