摘要: 原創(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)介紹
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 —