單手擼了個springboot+mybatis+druid

假不理發表於2018-10-31

單手擼了個springboot+mybatis+druid

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

最近身邊的程式設計師掀起了學習springboot的熱潮,說什麼學會了springboot在大街上就可以橫著走、什麼有了springboot媽媽再也不擔心我的程式設計了、什麼BAT都喜歡的框架…聽得作者那個心癢癢的,於是找了個時間,下載了個idea來玩一波springboot,對了…用springboot最好用idea,如果你還在用eclipse,刪了吧。

在這裡解釋一下為什麼是springboot+mybatis+druid,是因為作者認為但凡任何一個有靈魂的專案,都少不了資料庫,作者不喜歡用JPA那種混SQL的語法,因此選了mybatis,而Druid是阿里系(真香~)的一種資料庫連線池框架,在上一個專案作者用的屢試不爽,因此打算繼續用,為啥屢試不爽?看文末吧。

文章提綱:

  1. 建立springboot工程
  2. 配置pom.xml
  3. 配置資料來源
  4. 設定mybatis
  5. hello world
  6. 設定Druid監控配置

1. 建立springboot工程

只要你有idea,建立一個springboot工程,就跟捏死一個螞蟻一樣簡單,因為idea裡深度整合了對springboot專案的支援,你直接不停的next到最後,它就會幫你建立出一個springboot工程。

  1. 首先開啟idea->Create New project->選擇專案型別:這裡選擇spring initializr,然後next。

  2. 建立專案,填寫專案名稱,注意:不要能駝峰寫法,可以用中橫線,填寫完畢後繼續next。

  3. 選擇依賴,所謂依賴就是你在設計這個專案的框架時,分析這個專案需要用到哪些jar或者元件,比如快取要用到Redis,資料庫要用到MySQL等…這裡因為演示專案,就不選擇太多其它亂七八糟的依賴了。

  4. 選好依賴之後,又是一路狂點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,紅色已經消失,說明依賴已經裝備完成。

  1. 配置資料來源

接下來就是要多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

繼續在application.yml中設定mybatis,mybatis的配置也簡單,
主要是為了設定mybatis的配置檔案已經mapper檔案所在。

  1. 首先在resource目錄下建立一個mybatis-config.xml檔案,檔案內容為:
1<?xml version="1.0" encoding="UTF-8" ?>
2<!DOCTYPE configuration
3        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4        "http://mybatis.org/dtd/mybatis-3-config.dtd">

5<configuration>
6    <mappers>
7    </mappers>
8</configuration>
複製程式碼
  1. 在main包中的根目錄下建立一個存放mapper實體的資原始檔,在resource檔案下建立一個資料夾mapper用來存放mapper的xml檔案。

  2. 配置好資原始檔路徑之後,就可以在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的內容如下圖:

  1. 此時需要有一個資料庫表來做測試,我們在資料庫建立一個表,並且插入一條資料:
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")
複製程式碼
  1. 在mapper包中建立Memeber的mapper介面:
1public interface MemeberMapper {
2    /**
3     * 根據ID獲取記錄
4     * @param id
5     * @return
6     */

7    public Map findObjectById(Integer id);
8}
複製程式碼
  1. 在resource中的mapper資料夾建立memberMapper.xml,並且在mapper中增加一個findObjectById的SQL查詢語句。
 1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE mapper
3        PUBLIC "-//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">
9        select * from memeber where id = #{value}
10    </select>
11</mapper>
複製程式碼

5. hello world

走到這一步,基本上已經是大功告成了,我們來寫一個測試類試試,在根目錄建立一個controller的包,在包中建立一個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}
複製程式碼

建立完之後,我們執行專案,找到啟動類MybatisAndDruidApplication右鍵run,發現報錯,提示沒有掃描到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呢?

  1. 設定Druid監控配置
    druid的使用需要做一些配置,現在我們來在根目錄下建立一個包config,在config包中間建立一個叫做DruidConfig.java,並且在裡寫入下面的內容:
 1@Configuration
2public class DruidConfig {
3    @Bean
4    public ServletRegistrationBean druidServlet() // 主要實現WEB監控的配置處理
5        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 進行druid監控的配置處理操作
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("/*"); // 所有請求進行監控處理
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監控平臺就出現了

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

Druid非常強大,在這裡你可以檢視SQL的執行情況、慢SQL、API請求情況等,根據這些可以做一些效能的調優,至於詳細的用法,就靠大家自行學習啦~

如果有老鐵需要專案原始碼,請加我微信:sisi-ceo。


覺得本文對你有幫助?請分享給更多人
關注「程式設計無界」,提升裝逼技能

相關文章