本文旨在用最通俗的語言講述最枯燥的基本知識
最近身邊的程序員掀起了學習springboot的熱潮晚胡,說什么學會了springboot在大街上就可以橫著走矮烹、什么有了springboot媽媽再也不擔心我的編程了这刷、什么BAT都喜歡的框架…聽得作者那個心癢癢的捕透,于是找了個時間绞铃,下載了個idea來玩一波springboot很泊,對了…用springboot最好用idea,如果你還在用eclipse裁奇,刪了吧桐猬。
在這里解釋一下為什么是springboot+mybatis+druid,是因為作者認為但凡任何一個有靈魂的項目刽肠,都少不了數據庫溃肪,作者不喜歡用JPA那種混SQL的語法免胃,因此選了mybatis,而Druid是阿里系(真香~)的一種數據庫連接池框架惫撰,在上一個項目作者用的屢試不爽羔沙,因此打算繼續(xù)用,為啥屢試不爽厨钻?看文末吧扼雏。
文章提綱:
創(chuàng)建springboot工程
配置pom.xml
配置數據源
設置mybatis
hello world
設置Druid監(jiān)控配置
1. 創(chuàng)建springboot工程
只要你有idea,創(chuàng)建一個springboot工程夯膀,就跟捏死一個螞蟻一樣簡單诗充,因為idea里深度集成了對springboot項目的支持,你直接不停的next到最后诱建,它就會幫你創(chuàng)建出一個springboot工程蝴蜓。
首先打開idea->Create New project->選擇項目類型:這里選擇spring initializr,然后next俺猿。
創(chuàng)建項目茎匠,填寫項目名稱,注意:不要能駝峰寫法押袍,可以用中橫線,填寫完畢后繼續(xù)next诵冒。
選擇依賴,所謂依賴就是你在設計這個項目的框架時谊惭,分析這個項目需要用到哪些jar或者組件汽馋,比如緩存要用到Redis,數據庫要用到MySQL等…這里因為演示項目午笛,就不選擇太多其它亂七八糟的依賴了惭蟋。
選好依賴之后,又是一路狂點next药磺,直到最后finish一下,一個springboot項目就創(chuàng)建好了煤伟。
2. 配置pom.xml
想想癌佩,我們需要哪些jar现斋?
數據庫要用到mybatis拦焚,數據庫連接池要用到Druid、MySQL橋接器要用到mysql-connector夺鲜,因此要maven倉庫(點我去倉庫)中找到搜索這些pom加進去放案。注意姚建,mybatis要用mybatis-spring-boot-starter。
1
2
3 mysql
4 mysql-connector-java
5 5.1.6
6
7
8
9 com.alibaba
10 druid
11 1.1.10
12
13
14
15 org.mybatis.spring.boot
16 mybatis-spring-boot-starter
17 1.3.2
18
復制代碼
把上面這些pom放到pom.xml的dependencies中
細心的老鐵會發(fā)現吱殉,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
3 messages:
4 basename: i18n/Messages,i18n/Pages
5 datasource:
6 type: com.alibaba.druid.pool.DruidDataSource # 配置當前要使用的數據源的操作類型
7 driver-class-name: org.gjt.mm.mysql.Driver # 配置MySQL的驅動程序類
8 url: jdbc:mysql://localhost:3306/wkt_stat # 數據庫連接地址
9 username: root # 數據庫用戶名
10 password: root # 數據庫連接密碼
11 dbcp2: # 進行數據庫連接池的配置
12 min-idle: 5 # 數據庫連接池的最小維持連接數
13 initial-size: 5 # 初始化提供的連接數
14 max-total: 5 # 最大的連接數
15 max-wait-millis: 200 # 等待連接獲取的最大超時時間
復制代碼
4. 設置mybatis
繼續(xù)在application.yml中設置mybatis,mybatis的配置也簡單澳淑,
主要是為了設置mybatis的配置文件已經mapper文件所在比原。
首先在resource目錄下創(chuàng)建一個mybatis-config.xml文件,文件內容為:
1
2
3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
5
6
7
8
復制代碼
在main包中的根目錄下創(chuàng)建一個存放mapper實體的資源文件,在resource文件下創(chuàng)建一個文件夾mapper用來存放mapper的xml文件杠巡。
配置好資源文件路徑之后量窘,就可以在application.yml中加入mybatis的配置了,如下是一個mybatis的配置內容:
1#mybatis的mapper配置文件
2mybatis:
3 config-location: classpath:mybatis-config.xml # mybatis配置文件所在路徑
4 #mapper-locations: classpath:mapper/*.xml # 所有的mapper映射文件
5 type-aliases-package: com.becl.dao.mapper # 定義所有操作類的別名所在包
6debug: true
復制代碼
最終application.yml的內容如下圖:
此時需要有一個數據庫表來做測試氢拥,我們在數據庫創(chuàng)建一個表,并且插入一條數據:
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包中創(chuàng)建Memeber的mapper接口:
1public interface MemeberMapper {
2 /**
3 * 根據ID獲取記錄
4 * @param id
5 * @return
6 */
7 public Map findObjectById(Integer id);
8}
復制代碼
在resource中的mapper文件夾創(chuàng)建memberMapper.xml,并且在mapper中增加一個findObjectById的SQL查詢語句。
1
2
3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
6
7#根據ID查詢記錄
8
9 select * from memeber where id = #{value}
10
11
復制代碼
5. hello world
走到這一步,基本上已經是大功告成了蹬昌,我們來寫一個測試類試試昆汹,在根目錄創(chuàng)建一個controller的包辈末,在包中創(chuàng)建一個Java類捅彻,如下:
1@Controller
2@RequestMapping("/test")
3public class TestController {
4 @Resource
5 private MemeberMapper memeberMapper=null;
6
7 @RequestMapping("/one")
8 @ResponseBody
9 public Map testdb(){
10 return memeberMapper.findObjectById(1);
11 }
12}
復制代碼
創(chuàng)建完之后,我們運行項目,找到啟動類MybatisAndDruidApplication右鍵run,發(fā)現報錯氏淑,提示沒有掃描到mapper包,為什么呢?那是mapper需要手動在啟動類中加入:
1@MapperScan("com.example.mybatisanddruid.mapper")
復制代碼
這樣啟動類就變成:
1@SpringBootApplication
2@MapperScan("com.example.mybatisanddruid.mapper")
3public class MybatisAndDruidApplication {
4
5 public static void main(String[] args) {
6 SpringApplication.run(MybatisAndDruidApplication.class, args);
7 }
8}
復制代碼
再次運行颠印,沒有報錯,在瀏覽器輸入:http://localhost:8888/test/one
輸出了ID為1的記錄:
1{"name":"jas","id":1}
復制代碼
由此可見询件,springboot-mybatis已經搭建成功,此時有人會問夯秃,那Druid呢座咆?
設置Druid監(jiān)控配置
druid的使用需要做一些配置,現在我們來在根目錄下創(chuàng)建一個包config仓洼,在config包中間創(chuàng)建一個叫做DruidConfig.java介陶,并且在里寫入下面的內容:
1@Configuration
2public class DruidConfig {
3 @Bean
4 public ServletRegistrationBean druidServlet() { // 主要實現WEB監(jiān)控的配置處理
5 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 進行druid監(jiān)控的配置處理操作
6 servletRegistrationBean.addInitParameter("allow",
7 "127.0.0.1,192.168.1.159"); // 白名單
8 servletRegistrationBean.addInitParameter("deny", "192.168.1.200"); // 黑名單
9 servletRegistrationBean.addInitParameter("loginUsername", "stat"); // 用戶名
10 servletRegistrationBean.addInitParameter("loginPassword", "Wkt_sTat_1031"); // 密碼
11 servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否可以重置數據源
12 return servletRegistrationBean ;
13 }
14 @Bean
15 public FilterRegistrationBean filterRegistrationBean() {
16 FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean() ;
17 filterRegistrationBean.setFilter(new WebStatFilter());
18
19 filterRegistrationBean.addUrlPatterns("/*"); // 所有請求進行監(jiān)控處理
20 filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
21 return filterRegistrationBean ;
22 }
23 @Bean
24 @ConfigurationProperties(prefix = "spring.datasource")
25 public DataSource druidDataSource() {
26 return new DruidDataSource();
27 }
28
29}
復制代碼
配置中的內容就不一一細講, 有興趣的直接百度一下druid就出來很多答案了色建,現在重新運行一下項目哺呜,運行成功之后,在瀏覽器中輸入:http://localhost:8888/druid
這時候箕戳,druid監(jiān)控平臺就出現了
此時我們輸入在DruidConfig中設置的loginUsername和loginPassword點擊登錄某残,一個完整的druid監(jiān)控管理平臺就呈現在我們啦~
Druid非常強大,在這里你可以查看SQL的執(zhí)行情況陵吸、慢SQL玻墅、API請求情況等,根據這些可以做一些性能的調優(yōu)壮虫,至于詳細的用法澳厢,就靠大家自行學習啦~
本文用到的技術棧
springboot
mybatis
現在加群即可獲取更加詳細的Java架構腦圖环础,還有Java工程化、高性能及分布式剩拢、高性能线得、高架構、zookeeper徐伐、性能調優(yōu)贯钩、Spring、MyBatis办素、Netty源碼分析和大數據等多個知識點高級進階干貨的直播免費學習權限及相關視頻資料角雷,群號:835638062 點擊鏈接加入群聊【Java高級架構學習交流】:https://jq.qq.com/?_wv=1027&k=5S3kL3v