Springboot 整合 Mybatis 的完整 Web 案例

bysocket發表於2017-02-10

摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 希望轉載,保留摘要,謝謝! 推薦一本書《騰訊傳》。 新年第一篇 Springboot 技術文誕生。泥瓦匠準備寫寫 Springboot 相關最佳實踐。一方面總結下一些 Springboot 相關,一方面和大家交流交流 Springboot 框架。 現在業界網際網路流行的資料操作層框架 Mybatis,下面詳解下 Springboot 如何整合 Mybatis ,這邊沒有使用 Mybatis Annotation 這種,是使用 xml 配置 SQL。因為我覺得 SQL 和業務程式碼應該隔離,方便和 DBA 校對 SQL。二者 XML 對較長的 SQL 比較清晰。 一、執行 springboot-mybatis 工程

git clone 下載工程 springboot-learning-example ,專案地址見 GitHub。下面開始執行工程步驟(Quick Start): 1.資料庫準備 a.建立資料庫 springbootdb: 1 CREATE DATABASE springbootdb; b.建立表 city :(因為我喜歡徒步) 1 2 3 4 5 6 7 8 DROP TABLE IF EXISTS city; CREATE TABLE city ( id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '城市編號', province_id int(10) unsigned NOT NULL COMMENT '省份編號', city_name varchar(25) DEFAULT NULL COMMENT '城市名稱', description varchar(25) DEFAULT NULL COMMENT '描述', PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; c.插入資料 1 INSERT city VALUES (1 ,1,'溫嶺市','BYSocket 的家在溫嶺。'); 2. 專案結構介紹 專案結構如下圖所示: org.spring.springboot.controller – Controller 層 org.spring.springboot.dao – 資料操作層 DAO org.spring.springboot.domain – 實體類 org.spring.springboot.service – 業務邏輯層 Application – 應用啟動類 application.properties – 應用配置檔案,應用啟動會自動讀取配置 3.改資料庫配置 開啟 application.properties 檔案, 修改相應的資料來源配置,比如資料來源地址、賬號、密碼等。(如果不是用 MySQL,自行新增連線驅動 pom,然後修改驅動名配置。) 4.編譯工程 在專案根目錄 springboot-learning-example,執行 maven 指令: 1 mvn clean install 5.執行工程 右鍵執行 Application 應用啟動類的 main 函式,然後在瀏覽器訪問:

1 http://localhost:8080/api/city?cityName=溫嶺市 可以看到返回的 JSON 結果: 1 2 3 4 5 6 { "id": 1, "provinceId": 1, "cityName": "溫嶺市", "description": "我的家在溫嶺。" } 如圖:

二、springboot-mybatis 工程配置詳解

1.pom 新增 Mybatis 依賴 1 2 3 4 5 6 org.mybatis.spring.boot mybatis-spring-boot-starter ${mybatis-spring-boot} mybatis-spring-boot-starter 工程依賴如圖:

2.在 application.properties 應用配置檔案,增加 Mybatis 相關配置 1 2 3

Mybatis 配置

mybatis.typeAliasesPackage=org.spring.springboot.domain mybatis.mapperLocations=classpath:mapper/.xml mybatis.typeAliasesPackage 配置為 org.spring.springboot.domain,指向實體類包路徑。mybatis.mapperLocations 配置為 classpath 路徑下 mapper 包下, 代表會掃描所有 xml 檔案。 mybatis 其他配置相關詳解如下: mybatis.config = mybatis 配置檔名稱 mybatis.mapperLocations = mapper xml 檔案地址 mybatis.typeAliasesPackage = 實體類包路徑 mybatis.typeHandlersPackage = type handlers 處理器包路徑 mybatis.check-config-location = 檢查 mybatis 配置是否存在,一般命名為 mybatis-config.xml mybatis.executorType = 執行模式。預設是 SIMPLE 3.在 Application 應用啟動類新增註解 MapperScan Application.java 程式碼如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * Spring Boot 應用啟動類 * * Created by bysocket on 16/4/26. */ // Spring Boot 應用的標識 @SpringBootApplication // mapper 介面類掃描包配置 @MapperScan("org.spring.springboot.dao") public class Application {

public static void main(String[] args) {
    // 程式啟動入口
    // 啟動嵌入式的 Tomcat 並初始化 Spring 環境及其各 Spring 元件
    SpringApplication.run(Application.class,args);
}

} mapper 介面類掃描包配置註解 MapperScan :用這個註解可以註冊 Mybatis mapper 介面類。 4.新增相應的 City domain類、CityDao mapper介面類 City.java:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 /** * 城市實體類 * * Created by bysocket on 07/02/2017. */ public class City {

/**
 * 城市編號
 */
private Long id;

/**
 * 省份編號
 */
private Long provinceId;

/**
 * 城市名稱
 */
private String cityName;

/**
 * 描述
 */
private String description;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public Long getProvinceId() {
    return provinceId;
}

public void setProvinceId(Long provinceId) {
    this.provinceId = provinceId;
}

public String getCityName() {
    return cityName;
}

public void setCityName(String cityName) {
    this.cityName = cityName;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

} CityDao.java: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /** * 城市 DAO 介面類 * * Created by bysocket on 07/02/2017. */ public interface CityDao {

/**
 * 根據城市名稱,查詢城市資訊
 *
 * @param cityName 城市名
 */
City findByName(@Param("cityName") String cityName);

} 其他不明白的,可以 git clone 下載工程 springboot-learning-example ,工程程式碼註解很詳細。 https://github.com/JeffLi1993/springboot-learning-example。 三、其他

利用 Mybatis-generator自動生成程式碼 http://www.cnblogs.com/yjmyzz/p/4210554.html Mybatis 通用 Mapper3 https://github.com/abel533/Mapper Mybatis 分頁外掛 PageHelper https://github.com/pagehelper/Mybatis-PageHelper 最後,推薦閱讀:《 Spring Boot 之 HelloWorld 詳解》 歡迎掃一掃我的公眾號關注 — 及時得到部落格訂閱哦! — http://www.bysocket.com/ — — https://github.com/JeffLi1993 —

相關文章