1. 程式人生 > >45. Spring Boot MyBatis連線Mysql資料庫【從零開始學Spring Boot】

45. Spring Boot MyBatis連線Mysql資料庫【從零開始學Spring Boot】

【視訊&交流平臺】

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

https://gitee.com/happyangellxq520/spring-boot

http://412887952-qq-com.iteye.com/blog/2321532



大家在開發的時候,會喜歡jdbcTemplate操作資料庫,有喜歡JPA操作資料庫的,有喜歡MyBatis操作資料庫的,對於這些我個人覺得哪個使用順手就使用哪個就好了,並沒有一定要使用哪個,個人在實際中會整合多個,這樣儲存的資料的時候,選擇一個最方便的也就是JPA,查詢的時候,或者統計的時候,選擇一個效率最高的,也就是直接使用SQL語句方式,當然這並一定要這樣的,現在優化方式又很多。那麼這節說說怎麼在Spring Boot中使用MyBatis吧。主要分幾個步驟進行講解:

(1)新建maven project;

(2)在pom.xml檔案中引入相關依賴;

(3)建立啟動類App.java

(4)在application.properties新增配置檔案;

(5)編寫Demo測試類;

(6)編寫DemoMapper;

(7)編寫DemoService

(8)編寫DemoController;

(9)加入PageHelper

接下里我們一起來進行實現吧。

(1)新建maven project;

新建一個maven project,取名為:spring-boot-mybatis

(2)在pom.xml檔案中引入相關依賴;

在pom.xml中加入依賴:mysql驅動,mybatis依賴包,mysql分頁PageHelper:

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <modelVersion>4.0.0</modelVersion>

 <groupId>com.kfit</groupId>

 <artifactId>spring-boot-mybatis</artifactId>

 <version>0.0.1-SNAPSHOT</version>

 <packaging>jar</packaging>

 <name>spring-boot-mybatis</name>

 <url>http://maven.apache.org</url>

 <properties>

   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   <!--jdk版本號,angel在這裡使用1.8,大家修改為大家本地配置的jdk版本號即可 -->

   <java.version>1.8</java.version>

 </properties>

       <!--

              springboot父節點依賴,

引入這個之後相關的引入就不需要新增version配置,

              springboot會自動選擇最合適的版本進行新增。

        -->

       <parent>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-parent</artifactId>

              <version>1.3.3.RELEASE</version>

       </parent>

 <dependencies>

   <!-- spring boot web支援:mvc,aop...-->

       <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-web</artifactId>

       </dependency>

   <!--mysql資料庫驅動. -->

   <dependency>

              <groupId>mysql</groupId>

              <artifactId>mysql-connector-java</artifactId>

       </dependency>

       <!--      

                     spring-bootmybatis依賴:

請不要使用1.0.0版本,因為還不支援攔截器外掛,

                  1.1.1是博主寫帖子時候的版本,大家使用最新版本即可

            -->

       <dependency>

           <groupId>org.mybatis.spring.boot</groupId>

           <artifactId>mybatis-spring-boot-starter</artifactId>

           <version>1.1.1</version>

       </dependency>

   <!--

          MyBatis提供了攔截器介面,我們可以實現自己的攔截器,

將其作為一個plugin裝入到SqlSessionFactory中。

             Github上有位開發者寫了一個分頁外掛,我覺得使用起來還可以,挺方便的。

             Github專案地址:https://github.com/pagehelper/Mybatis-PageHelper

    -->      

   <dependency>

           <groupId>com.github.pagehelper</groupId>

           <artifactId>pagehelper</artifactId>

           <version>4.1.0</version>

       </dependency>

 </dependencies>

</project>

(3)建立啟動類App.java >com.kfit.App.java

package com.kfit;

importorg.mybatis.spring.annotation.MapperScan;

importorg.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

 *啟動類;

 *@author Angel(QQ:412887952)

 *@version v.0.1

 */

@SpringBootApplication

@MapperScan("com.kfit.*.mapper")

publicclass App {

       publicstaticvoid main(String[]args) {

              SpringApplication.run(App.class,args);

       }

}

這裡和以往不一樣的地方就是MapperScan的註解,這個是會掃描該包下的介面。

這裡我們使用註解的方式進行使用MyBatis,當然您也可以使用xml檔案的方式進行使用。

(4)在application.properties新增配置檔案;

       Mysql的配置,這個我們已經是輕車熟路了:

########################################################

###datasource

########################################################

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username= root

spring.datasource.password= root

spring.datasource.driverClassName=com.mysql.jdbc.Driver

spring.datasource.max-active=20

spring.datasource.max-idle=8

spring.datasource.min-idle=8

spring.datasource.initial-size=10

(5)編寫Demo測試類;

測試實體類com.kfit.demo.bean.Demo:

package com.kfit.demo.bean;

/**

 *測試類.

 *@author Angel(QQ:412887952)

 *@version v.0.1

 */

publicclass Demo {

       privatelongid;

       private Stringname;

       publiclong getId() {

              returnid;

       }

       publicvoid setId(longid) {

              this.id =id;

       }

       public StringgetName() {

              returnname;

       }

       publicvoid setName(Stringname) {

              this.name =name;

       }

}

(6)編寫DemoMapper;

MyBatis使用類,這裡主要是@select進行使用.

com.kfit.demo.mapper.DemoMappper:

package com.kfit.demo.mapper;

import java.util.List;

importorg.apache.ibatis.annotations.Select;

import com.kfit.demo.bean.Demo;

publicinterface DemoMappper {

       @Select("select*from Demo where name = #{name}")

       publicList<Demo> likeName(Stringname);

       @Select("select*from Demo where id = #{id}")

       public Demo getById(longid);

       @Select("selectname from Demo where id = #{id}")

       public StringgetNameById(longid);

}

(7)編寫DemoService

com.kfit.demo.service.DemoService:

package com.kfit.demo.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

importorg.springframework.stereotype.Service;

import com.kfit.demo.bean.Demo;

import com.kfit.demo.mapper.DemoMappper;

@Service

publicclass DemoService {

       @Autowired

       private DemoMappperdemoMappper;

   public List<Demo> likeName(Stringname){

        returndemoMappper.likeName(name);

   }

}

(8)編寫DemoController;

com.kfit.demo.controller.DemoController:

package com.kfit.demo.controller;

import java.util.List;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

import com.github.pagehelper.PageHelper;

import com.kfit.demo.bean.Demo;

import com.kfit.demo.service.DemoService;

@RestController

publicclass DemoController {

       @Autowired

       private DemoServicedemoService;

       @RequestMapping("/likeName")

       publicList<Demo> likeName(Stringname){

              returndemoService.likeName(name);

       }

}

(9)加入PageHelper

這裡與其說整合分頁外掛,不如說是介紹如何整合一個plugin。MyBatis提供了攔截器介面,我們可以實現自己的攔截器,將其作為一個plugin裝入到SqlSessionFactory中。

Github上有位開發者寫了一個分頁外掛,我覺得使用起來還可以,挺方便的。

當然需要新增相應的依賴包了,我們在上面已經配置了,這裡簡單說下:

dependency>

<groupId>com.github.pagehelper</groupId>

<artifactId>pagehelper</artifactId>

<version>4.1.0</version>

</dependency>



新增MyBatisConfiguration.java

com.kfit.config.mybatis.MyBatisConfiguration:

package com.kfit.config.mybatis;

import java.util.Properties;

importorg.springframework.context.annotation.Bean;

importorg.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

/**

 *註冊MyBatis分頁外掛PageHelper

 *@author Angel(QQ:412887952)

 *@version v.0.1

 */

@Configuration

publicclass MyBatisConfiguration {

       @Bean

   public PageHelper pageHelper() {

              System.out.println("MyBatisConfiguration.pageHelper()");

        PageHelper pageHelper = new PageHelper();

        Properties p = new Properties();

        p.setProperty("offsetAsPageNum", "true");

        p.setProperty("rowBoundsWithCount", "true");

        p.setProperty("reasonable", "true");

        pageHelper.setProperties(p);

        returnpageHelper;

   }

}

分頁查詢測試

@RequestMapping("/likeName")

       publicList<Demo> likeName(Stringname){

               PageHelper.startPage(1,1);

            returndemoService.likeName(name);

       }

這個使用起來特別的簡單,只是在原來查詢的程式碼之前加入了一句:

 PageHelper.startPage(1,1);

第一個引數是第幾頁;

第二個引數是每頁顯示條數。

Spring Boot 系列視訊】

視訊&交流平臺:

http://study.163.com/course/introduction.htm?courseId=1004329008

http://412887952-qq-com.iteye.com/blog/2321532

網易雲課堂視訊最新更新

第十一章 Spring Boot 日誌

1、spring boot日誌—理論

2、Spring Boot日誌-logback

3、Spring Boot日誌-log4j2

第十二章 Spring Boot 知識點2

1、spring boot 服務配置和部署

2、Spring Boot 定製URL匹配規則

歷史章節

第一章 快速開始

1、Spring Boot之Hello World

2、Spring Boot之Hello World訪問404

第二章 Spring Boot之JSON

1、spring boot返回json資料

2、Spring Boot完美使用FastJson解析JSON資料

第三章 Spring Boot熱部署

1、Spring Boot熱部署(springloader)

2、springboot + devtools(熱部署)

第四章 Spring Boot資料庫

1、Spring Boot JPA/Hibernate/Spring Data概念

2、Spring Boot JPA-Hibernate

3、Spring Boot Spring Data JPA介紹

4、Spring Boot JdbcTemplate

5、Spring Boot整合MyBatis

第五章 web開發

1、全域性異常捕捉

2、配置server資訊

3、spring boot使用thymeleaf

4、Spring Boot 使用freemarker

5、Spring Boot新增JSP支援

第六章 定時任務

1、Spring Boot定時任務

2、Spring Boot 定時任務升級篇(動態修改cron引數)

3、Spring Boot 定時任務升級篇(動態新增修改刪除定時任務)

4、Spring Boot 定時任務升級篇(叢集/分散式下的定時任務說明)

5、Spring Boot Quartz介紹

6、Spring Boot Quartz在Java Project中使用

7、Spring Boot 整合Quartz普通使用

8、Spring Boot 整合Quartz升級版

9、Spring Boot 整合Quartz二次升級版

10、Spring Boot 整合Quartz-Job如何自動注入Spring容器託管的物件

第七章 Spring Boot MyBatis升級篇

1、Spring Boot MyBatis升級篇-註解

2、Spring Boot MyBatis升級篇-註解-自增ID

3、Spring Boot MyBatis升級篇-註解-增刪改查

4、Spring Boot MyBatis升級篇-註解-分頁查詢

5、Spring Boot MyBatis升級篇-註解-分頁PageHelper不生效

6、Spring Boot MyBatis升級篇-註解- mybatic insert異常:BindingException: Parameter 'name' not found

7、Spring Boot MyBatis升級篇-註解- #和$符號特別篇

8、Spring Boot MyBatis升級篇-註解[email protected]

9、Spring Boot MyBatis升級篇-註解-動態SQL(if test)-方案一:<script>

10、Spring Boot MyBatis升級篇-註解-動態SQL(if test)-方案二:@Provider

11、Spring Boot MyBatis升級篇-註解-動態SQL-引數問題

12、Spring Boot MyBatis升級篇-註解-特別篇:@MapperScan和@Mapper

13、Spring Boot MyBatis升級篇-XML

14、Spring Boot MyBatis升級篇-XML-自增ID

15、Spring Boot MyBatis升級篇-XML-增刪改查

16、Spring Boot MyBatis升級篇-XML-分頁查詢

17、Spring Boot MyBatis升級篇-XML-分頁PageHelper不生效

18、Spring Boot MyBatis升級篇-XML-動態SQL(if test)

19、Spring Boot MyBatis升級篇-XML-註解-初嘗試

20、Spring Boot MyBatis升級篇- pagehelper替換為pagehelper-spring-boot-starter

第八章 Spring Boot 知識點1

1、Spring Boot 攔截器HandlerInterceptor

2、Spring Boot啟動載入資料CommandLineRunner

3、Spring Boot環境變數讀取和屬性物件的繫結

4、Spring Boot使用自定義的properties

5、Spring Boot使用自定義的properties

6、Spring Boot使用@SpringBootApplication

7、Spring Boot 監控和管理生產環境

第十章 Spring Boot 打包部署

1、Spring Boot打包部署((提供Linux的sh檔案))

第十一章 Spring Boot 日誌

1、spring boot日誌—理論

2、Spring Boot日誌-logback

3、Spring Boot日誌-log4j2


相關推薦

45. Spring Boot MyBatis連線Mysql資料庫開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

資料新增非同步解析重新整理大資料量redis (——)(三)Spring Boot普通類呼叫bean開始Spring Boot

部落格分類:  從零開始學Spring Boot 從零開始學Spring BootSpring Boot普通類呼叫bean    【視訊&交流平臺】 à SpringBoot視訊 http://stu

74. Spring Data JPA方法定義規範開始Spring Boot

【從零開始學習Spirng Boot—常見異常彙總】     事情的起因:有人問過我們這個這個問題:為什麼我利用Spring data jpa寫的方法沒有按照我想要的情況進行執行呢?我記得當時只是告訴他你你先看看Spring Data的命名規則吧。所以在這一小節把Spr

102. Spring Boot之CommandLineRunner和ApplicationRunner開始Spring Boot

 需求緣起:在有【Spring Boot啟動載入資料CommandLineRunner】文章中介紹了CommandLineRunner的使用,有人評論說實現ApplicationRunner介面也可以,那麼本節就是要介紹ComandLineRunner和Applicatio

17、Spring Boot普通類呼叫bean開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

71.mybatis 如何獲取插入的id開始Spring Boot

在之前的文章已經講過spring boot整合mybatis了,但是忘記說一個很重要的知識點了,那就是獲取獲取主鍵id,這篇文章補充下,spring boot整合mybatis看之前文章:        其實這個也很簡單,主要是使用@Options註解,核心程式碼如下:

Spring Boot使用模板freemarker開始Spring Boot(轉)

dep demo attach macro 使用 doctype com 地址 2016年 視頻&交流平臺:à SpringBoot網易雲課堂視頻http://study.163.com/course/introduction.htm?courseId=10

33. Spring Boot 監控和管理生產環境開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

(33)Spring Boot 監控和管理生產環境開始Spring Boot

spring-boot-actuator模組提供了一個監控和管理生產環境的模組,可以使用http、jmx、ssh、telnet等拉管理和監控應用。審計(Auditing)、 健康(health)、資料採集(metrics gathering)會自動加入到應用裡面。 首先,寫

8. 使用JPA儲存資料開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

103. Spring Boot Freemarker特別篇之contextPath開始Spring Boot

需求緣起:有人在群裡@我:請教群主大神一個問題,spring boot  + freemarker 怎麼獲取contextPath 頭疼死我了,網上沒一個靠譜的 。我就看看之前部落格中的 【Spring Boot使用模板freemarker】好像確實沒有介紹到在.ftl檔案

31. Spring Boot匯入XML配置開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

2. Spring Boot返回json資料開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

35. Spring Boot整合Redis實現快取機制開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

51. spring boot屬性檔案之多環境配置開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

(27)Spring Boot Junit單元測試開始Spring Boot

Junit這種老技術,現在又拿出來說,不為別的,某種程度上來說,更是為了要說明它在專案中的重要性。 那麼先簡單說一下為什麼要寫測試用例 1. 可以避免測試點的遺漏,為了更好的進行測試,可以提高測試效率 2. 可以自動測試,可以在專案打包前進行測試校驗 3. 可以及時發現因為

40. springboot + devtools(熱部署)開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

104. Spring Boot 啟動流程分析第三篇開始Spring Boot

問題的提出:Spring Boot不像spring需要定義xml檔案檔案,那麼spring boot是如何在沒有配置檔案的情況下為我們啟動一個完整的WEB工程的呢。我們先@SpringBootApplication開始分析下這個啟動流程,原始碼取自:1.4.1.RELEAS

(4)Spring Boot完美使用FastJson解析JSON資料開始Spring Boot

個人使用比較習慣的json框架是fastjson,所以spring boot預設的json使用起來就很陌生了,所以很自然我就想我能不能使用fastjson進行json解析呢? 引入fastjson依賴庫:   <dependencies>         <

65.什麼是IOC?開始Spring Boot

【從零開始學習Spirng Boot—常見異常彙總】        這個小節吧,是無意當中看了一篇文章,覺得介紹的特別好,引用到我的部落格中,讓大家也樂下。那麼他是怎麼解說IOC的呢?看如下: 套用好萊塢的一句名言就是:你呆著別動,到時我會找你。  什麼意思呢?就好比一個皇帝和太監  有一天皇