Springboot 整合 Mybatis 的完整 Web 案例

摘要: 原創(chuàng)出處:www.bysocket.com 泥瓦匠BYSocket 希望轉(zhuǎn)載敢靡,保留摘要,謝謝赶站!

推薦一本書(shū)《騰訊傳》纺念。

新年第一篇 Springboot 技術(shù)文誕生陷谱。泥瓦匠準(zhǔn)備寫寫 Springboot 相關(guān)最佳實(shí)踐。一方面總結(jié)下一些 Springboot 相關(guān)渣窜,一方面和大家交流交流 Springboot 框架宪躯。

現(xiàn)在業(yè)界互聯(lián)網(wǎng)流行的數(shù)據(jù)操作層框架 Mybatis访雪,下面詳解下 Springboot 如何整合 Mybatis ,這邊沒(méi)有使用 Mybatis Annotation 這種蛤虐,是使用 xml 配置 SQL肝陪。因?yàn)槲矣X(jué)得 SQL 和業(yè)務(wù)代碼應(yīng)該隔離,方便和 DBA 校對(duì) SQL蹲堂。二者 XML 對(duì)較長(zhǎng)的 SQL 比較清晰贝淤。

一、運(yùn)行?springboot-mybatis 工程

git clone 下載工程springboot-learning-example朽基,項(xiàng)目地址見(jiàn)GitHub离陶。下面開(kāi)始運(yùn)行工程步驟(Quick Start):

1.數(shù)據(jù)庫(kù)準(zhǔn)備

a.創(chuàng)建數(shù)據(jù)庫(kù) springbootdb:

CREATE DATABASE springbootdb;

b.創(chuàng)建表 city :(因?yàn)槲蚁矚g徒步)

DROP TABLE IF EXISTS? `city`;

CREATE TABLE `city` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT'城市編號(hào)',

`province_id` int(10) unsigned? NOT NULL COMMENT'省份編號(hào)',

`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.插入數(shù)據(jù)

INSERT city VALUES (1 ,1,'溫嶺市','BYSocket 的家在溫嶺招刨。');

2. 項(xiàng)目結(jié)構(gòu)介紹

項(xiàng)目結(jié)構(gòu)如下圖所示:


org.spring.springboot.controller – Controller 層

org.spring.springboot.dao – 數(shù)據(jù)操作層 DAO

org.spring.springboot.domain – 實(shí)體類

org.spring.springboot.service – 業(yè)務(wù)邏輯層

Application – 應(yīng)用啟動(dòng)類

application.properties – 應(yīng)用配置文件打却,應(yīng)用啟動(dòng)會(huì)自動(dòng)讀取配置

3.改數(shù)據(jù)庫(kù)配置

打開(kāi) application.properties 文件谎倔, 修改相應(yīng)的數(shù)據(jù)源配置,比如數(shù)據(jù)源地址、賬號(hào)毯侦、密碼等具垫。(如果不是用 MySQL,自行添加連接驅(qū)動(dòng) pom卦碾,然后修改驅(qū)動(dòng)名配置洲胖。)

4.編譯工程

在項(xiàng)目根目錄 springboot-learning-example坯沪,運(yùn)行 maven 指令:

mvn clean install

5.運(yùn)行工程

右鍵運(yùn)行 Application 應(yīng)用啟動(dòng)類的 main 函數(shù),然后在瀏覽器訪問(wèn):

http://localhost:8080/api/city?cityName=溫嶺市

可以看到返回的 JSON 結(jié)果:

{

"id": 1,

"provinceId": 1,

"cityName":"溫嶺市",

"description":"我的家在溫嶺丐一。"

}

如圖:

二淹冰、springboot-mybatis 工程配置詳解

1.pom 添加?Mybatis 依賴

org.mybatis.spring.boot

mybatis-spring-boot-starter

${mybatis-spring-boot}

mybatis-spring-boot-starter 工程依賴如圖:

2.在 application.properties 應(yīng)用配置文件柠衍,增加 Mybatis 相關(guān)配置

## Mybatis 配置

mybatis.typeAliasesPackage=org.spring.springboot.domain

mybatis.mapperLocations=classpath:mapper/*.xml

mybatis.typeAliasesPackage 配置為?org.spring.springboot.domain疹鳄,指向?qū)嶓w類包路徑。mybatis.mapperLocations 配置為 classpath 路徑下 mapper 包下垫蛆,* 代表會(huì)掃描所有 xml 文件腺怯。

mybatis 其他配置相關(guān)詳解如下:

mybatis.config = mybatis 配置文件名稱

mybatis.mapperLocations = mapper xml?文件地址

mybatis.typeAliasesPackage = 實(shí)體類包路徑

mybatis.typeHandlersPackage = type handlers?處理器包路徑

mybatis.check-config-location = 檢查 mybatis 配置是否存在呛占,一般命名為?mybatis-config.xml

mybatis.executorType = 執(zhí)行模式。默認(rèn)是?SIMPLE

3.在 Application 應(yīng)用啟動(dòng)類添加注解?MapperScan

Application.java 代碼如下:

/**

* Spring Boot 應(yīng)用啟動(dòng)類

*

* Created by bysocket on 16/4/26.

*/

//Spring Boot 應(yīng)用的標(biāo)識(shí)

@SpringBootApplication

//mapper 接口類掃描包配置

@MapperScan("org.spring.springboot.dao")

public class Application {

public static void main(String[] args) {

//程序啟動(dòng)入口

//啟動(dòng)嵌入式的 Tomcat 并初始化 Spring 環(huán)境及其各 Spring 組件

SpringApplication.run(Application.class,args);

}

}

mapper 接口類掃描包配置注解 MapperScan :用這個(gè)注解可以注冊(cè) Mybatis mapper 接口類疹味。

4.添加相應(yīng)的 City domain類糙捺、CityDao mapper接口類

City.java:

/**

* 城市實(shí)體類

*

* Created by bysocket on 07/02/2017.

*/

public class City {

/**

* 城市編號(hào)

*/

private Longid;

/**

* 省份編號(hào)

*/

private Long provinceId;

/**

* 城市名稱

*/

private String cityName;

/**

* 描述

*/

private String description;

public Long getId() {

returnid;

}

public void setId(Longid) {

this.id=id;

}

public Long getProvinceId() {

returnprovinceId;

}

public void setProvinceId(Long provinceId) {

this.provinceId = provinceId;

}

public String getCityName() {

returncityName;

}

public void setCityName(String cityName) {

this.cityName = cityName;

}

public String getDescription() {

returndescription;

}

public void setDescription(String description) {

this.description = description;

}

}

CityDao.java:


* 城市 DAO 接口類

*

* Created by bysocket on 07/02/2017.

*/

public interface CityDao {

/**

* 根據(jù)城市名稱洪灯,查詢城市信息

*

* @param cityName 城市名

*/

City findByName(@Param("cityName") String cityName);

}

其他不明白的签钩,可以 git clone 下載工程springboot-learning-example坏快,工程代碼注解很詳細(xì)。https://github.com/JeffLi1993/springboot-learning-example柠并。

三、其他

利用 Mybatis-generator自動(dòng)生成代碼http://www.cnblogs.com/yjmyzz/p/4210554.html

Mybatis 通用 Mapper3https://github.com/abel533/Mapper

Mybatis 分頁(yè)插件 PageHelperhttps://github.com/pagehelper/Mybatis-PageHelper

最后鸣戴,推薦閱讀:《Spring Boot 之 HelloWorld 詳解

歡迎掃一掃我的公眾號(hào)關(guān)注 — 及時(shí)得到博客訂閱哦窄锅!

— http://www.bysocket.com/ —

— https://github.com/JeffLi1993 —

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末入偷,一起剝皮案震驚了整個(gè)濱河市械哟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锋爪,老刑警劉巖爸业,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扯旷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡毯炮,警方通過(guò)查閱死者的電腦和手機(jī)耸黑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門崎坊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洲拇,“玉大人,你說(shuō)我怎么就攤上這事赋续。” “怎么了蛾绎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵租冠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我纤泵,道長(zhǎng)镜粤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任公荧,我火速辦了婚禮循狰,結(jié)果婚禮上捻浦,老公的妹妹穿的比我還像新娘。我一直安慰自己昧识,他們只是感情好盗扒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布侣灶。 她就那樣靜靜地躺著,像睡著了一般池户。 火紅的嫁衣襯著肌膚如雪凡怎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天寨典,我揣著相機(jī)與錄音耸成,去河邊找鬼。 笑死井氢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的骗卜。 我是一名探鬼主播左胞,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼烤宙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了服猪?” 一聲冷哼從身側(cè)響起拐云,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膳帕,沒(méi)想到半個(gè)月后薇缅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汤徽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年谒府,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了完疫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亲轨。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惦蚊,死狀恐怖器虾,靈堂內(nèi)的尸體忽然破棺而出兆沙,到底是詐尸還是另有隱情莉掂,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布库正,位于F島的核電站褥符,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏喷楣。R本人自食惡果不足惜鹤树,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一罕伯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧追他,春花似錦、人聲如沸婿屹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蜂奸。三九已至硬萍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工榜跌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钝荡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子几晤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理植阴,服務(wù)發(fā)現(xiàn),斷路器憾朴,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評(píng)論 6 342
  • 最近做項(xiàng)目用到springboot整合mybatis砾省,security混槐。將其中遇到的問(wèn)題做一個(gè)總結(jié) 注:本項(xiàng)目全程...
    誰(shuí)在烽煙彼岸閱讀 1,871評(píng)論 0 1
  • 2017年1月6日悯嗓,湖南湘潭某小區(qū)內(nèi)發(fā)生悲慘的一幕,一位年輕的媽媽帶著兩個(gè)孩子脯厨,跳樓自殺,最終無(wú)一生寰临梗。看完這位媽...
    人間煙火2016閱讀 703評(píng)論 0 4
  • Junly,今天是你二十歲的生日夜焦,告別了二十歲之前的幼稚從而面向二十歲以后的成熟岂贩。在接下來(lái)這個(gè)人生最重要的...
    Junly閱讀 209評(píng)論 0 1