單手擼了個springboot+mybatis+druid

本文旨在用最通俗的語言講述最枯燥的基本知識

最近身邊的程序員掀起了學習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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摸屠,隨后出現的幾起案子谓罗,更是在濱河造成了極大的恐慌,老刑警劉巖季二,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檩咱,死亡現場離奇詭異,居然都是意外死亡胯舷,警方通過查閱死者的電腦和手機刻蚯,發(fā)現死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桑嘶,“玉大人炊汹,你說我怎么就攤上這事√佣ィ” “怎么了讨便?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長以政。 經常有香客問我霸褒,道長,這世上最難降的妖魔是什么盈蛮? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任废菱,我火速辦了婚禮,結果婚禮上抖誉,老公的妹妹穿的比我還像新娘殊轴。我一直安慰自己,他們只是感情好袒炉,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布旁理。 她就那樣靜靜地躺著,像睡著了一般我磁。 火紅的嫁衣襯著肌膚如雪韧拒。 梳的紋絲不亂的頭發(fā)上淹接,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音叛溢,去河邊找鬼。 笑死劲适,一個胖子當著我的面吹牛楷掉,可吹牛的內容都是我干的。 我是一名探鬼主播霞势,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼烹植,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了愕贡?” 一聲冷哼從身側響起草雕,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎固以,沒想到半個月后墩虹,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡憨琳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年诫钓,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篙螟。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡菌湃,死狀恐怖,靈堂內的尸體忽然破棺而出遍略,到底是詐尸還是另有隱情惧所,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布绪杏,位于F島的核電站下愈,受9級特大地震影響,放射性物質發(fā)生泄漏寞忿。R本人自食惡果不足惜驰唬,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腔彰。 院中可真熱鬧叫编,春花似錦、人聲如沸霹抛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杯拐。三九已至霞篡,卻和暖如春世蔗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朗兵。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工污淋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人余掖。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓寸爆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盐欺。 傳聞我的和親對象是個殘疾皇子赁豆,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容