SpringBoot 整合Mybatis(XML方式)+Mybatis generator+TkMybatis

1: Maven Pom.xml 添加依賴

<dependencies>
<!-- SpringBoot核心模塊炼幔,包括自動配置支持诞帐、日志和YAML东抹; -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
<!-- 測試模塊宫盔,包括JUnit、Hamcrest旺韭、Mockito胶坠。 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- Spring web  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    
    <!--mybatis 相關(guān)-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.1</version>
    </dependency>
    
    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <!-- 建議使用最新版本 -->
        <version>1.2.0</version>
    </dependency>
    
</dependencies>

2: 創(chuàng)建SpringBoot項目

  • 訪問http://start.spring.io/
  • 選擇構(gòu)建工具M(jìn)aven Project、Spring Boot版本1.3.6以及一些工程基本信息叔壤,點擊“Switch to the full version.”java版本選擇1.7
  • 點擊Generate Project下載項目壓縮包
  • 解壓后瞎饲,使用eclipse,Import -> Existing Maven Projects -> Next ->選擇解壓后的文件夾-> Finsh炼绘,OK done!

3: Mybatis Generator plugin 安裝(Eclipse)并配置Generator.xml

Mybatis generator 能幫助我們自動生成數(shù)據(jù)庫對應(yīng)的POJOs嗅战,DAOs和Mapper.xml。并實現(xiàn)了一些 基本的增刪改查接口以及其對應(yīng)的XML俺亮。在本文中驮捍,會將加入TKmybatis,使generator生成的Mapper 繼承 TKmybatis提供的mapper。相比原始的generator脚曾, 整合Tkmybatis.mapper 后 生成的mapper.xml 將會顯得更加簡潔东且。

3.1 安裝Mybatis generator 插件(Eclipse)

打開Eclipse ------ Help ------ Eclipse MarketPlace ------ 搜索mybatis generator 并安裝


image.png

3.2 配置generatorConfig.xml 文件

在resources下新建generatorConfig.xml文件
項目結(jié)構(gòu)
generatorConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--根節(jié)點 -->
<generatorConfiguration>
  <!--properties resource 導(dǎo)入配置文件,可以把 一些常量比如 數(shù)據(jù)庫的用戶名本讥,密碼珊泳,url寫在里面。如果想使用配置文件則可以直接在這里填寫完整-->
  <properties resource="config.properties"/>
  <classPathEntry  location="D:\java\lib\mysql\mysql-connector-java-5.1.44-bin.jar" /><!--驅(qū)動包的絕對路徑-->    
  

  <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    
    <property name="javaFileEncoding" value="UTF-8"/>
    <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
      <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
      <!-- caseSensitive默認(rèn)false拷沸,當(dāng)數(shù)據(jù)庫表名區(qū)分大小寫時色查,可以將該屬性設(shè)置為true -->
      <property name="caseSensitive" value="true"/>
    </plugin>

    <!--讀取 property 內(nèi)填寫的值-->
    <jdbcConnection driverClass="${jdbc.driverClass}"
                    connectionURL="${jdbc.url}"
                    userId="${jdbc.user}"
                    password="${jdbc.password}">
    </jdbcConnection>

   
    <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>

    <sqlMapGenerator targetPackage="mybatis.mapper"  targetProject="SpringbootDF/src/main/resources"/>

    <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" type="XMLMAPPER" />
    
    <!-- 要生成的table -->
    <table tableName="ir_robot_info" >
        <generatedKey column="robot_id" sqlStatement="Mysql" identity="true"/>
    </table>
    
    </context>
</generatorConfiguration>

保存后,右鍵generatorConfig.xml 選擇run as Mybatis Generator
成功生成

遇到的坑:
1:有些文章中撞芍,targetProject處填寫 src/main/java or resources 但實踐中發(fā)現(xiàn)會出錯旺隙,提示無法找到src項目仇参。在src前面加入 項目名稱即可(此處為SpringBootDF)
2: 關(guān)于 targetPackage , 在resources中new package 但顯示的還是文件夾的樣式,于是我在targetPackage中填入了 mybatis/mapper 結(jié)果被編譯器教育。嘗試修改成 mybatis.mapper 即可
3: 在使用 mybatis generator 時無法生成陵且,一直提示無法找到config.properties 文件。google大法+百度大法+重啟電腦大法+想念了一會周老師 后更新 eclipse 的generator插件后 解決订讼。

4:SpringBoot 添加注解浮定,并運行

4.1在application.java 處添加注解
@SpringBootApplication
@EnableScheduling  // 寫定時任務(wù)@Scheduled需要在主入口 增加該注解
@MapperScan("com.woosiyuan.dao") //此處填寫 mapper接口所在包,如果不加則需要在每個 mapper上添加 @Mapper 注解丈探。
public class SpringbootDfApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDfApplication.class, args);
    }
}
4.2編寫Service录择,Controller 實現(xiàn)業(yè)務(wù)邏輯。
@RestController
public class TestController {

    @RequestMapping("/test1")
    public String getTest() {
        return "test1";
    }
    
    
}

直接運行 application.java run as java application 即可。不需要配置tomcat


成功運行springBoot 可以看到其內(nèi)置的tomcat是在8080端口, 所以要注意8080端口不能被其它應(yīng)用占用
4.3 訪問瀏覽器

遇到的坑:
1:從springBoot官網(wǎng)下載的jar隘竭,導(dǎo)入進(jìn)eclipse后塘秦,application.java 會生成在 以項目名 命名的包下。application.java 一定要放在根目錄下动看,否則controller內(nèi)的方法都無法運行尊剔。會產(chǎn)生404錯誤。解決方案: 把application.java 移動到 src/main/java 下菱皆。
2:mybatis.mapper 初始化失敗须误,是因為配置的加載順序?qū)е碌摹?.2.0版本解決了該問題。解決方案:因為項目使用的是 spring boot 所以仇轻,導(dǎo)入的mapper依賴包也需要是mapper-spring-boot-starter京痢。且需要將 application.java 的mapperscan 從spring官方改為tk,mybatis 。
ref:https://github.com/abel533/mapper-boot-starter/issues/8 http://blog.csdn.net/u010342008/article/details/77802855

mapper 遇到的坑
參考資料:

springboot(六):如何優(yōu)雅的使用mybatis(介紹了SpringBoot整合Mybatis的兩種方式篷店,本文主要的參考文檔祭椰,感謝前輩們)
TKmybatis框架介紹和原理分析
SpringBoot+MyBatis通用Mapper3實踐淺析

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市疲陕,隨后出現(xiàn)的幾起案子方淤,更是在濱河造成了極大的恐慌,老刑警劉巖鸭轮,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臣淤,死亡現(xiàn)場離奇詭異,居然都是意外死亡窃爷,警方通過查閱死者的電腦和手機邑蒋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來按厘,“玉大人医吊,你說我怎么就攤上這事〈” “怎么了卿堂?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長懒棉。 經(jīng)常有香客問我草描,道長,這世上最難降的妖魔是什么策严? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任穗慕,我火速辦了婚禮,結(jié)果婚禮上妻导,老公的妹妹穿的比我還像新娘逛绵。我一直安慰自己怀各,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布术浪。 她就那樣靜靜地躺著瓢对,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胰苏。 梳的紋絲不亂的頭發(fā)上硕蛹,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音碟联,去河邊找鬼妓美。 笑死,一個胖子當(dāng)著我的面吹牛鲤孵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辰如,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼普监,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了琉兜?” 一聲冷哼從身側(cè)響起凯正,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豌蟋,沒想到半個月后廊散,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡梧疲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年允睹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幌氮。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡缭受,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出该互,到底是詐尸還是另有隱情米者,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布宇智,位于F島的核電站蔓搞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏随橘。R本人自食惡果不足惜喂分,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望太防。 院中可真熱鬧妻顶,春花似錦酸员、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沥潭,卻和暖如春邀泉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钝鸽。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工汇恤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拔恰。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓因谎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颜懊。 傳聞我的和親對象是個殘疾皇子财岔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)河爹,斷路器匠璧,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 前言 最近做回后臺開發(fā),重新抓起以前學(xué)過的SSM(Spring+Spring MVC+Mybatis)咸这,但是發(fā)現(xiàn)配...
    Raye閱讀 6,527評論 15 79
  • Spring 技術(shù)筆記Day 1 預(yù)熱知識一夷恍、 基本術(shù)語Blob類型,二進(jìn)制對象Object Graph:對象圖...
    OchardBird閱讀 975評論 0 2
  • 前言:學(xué)習(xí)SpringBoot不應(yīng)該直接就是開始使用SpringBoot,如果直接拿來用肯定會有很多人不是很明白特...
    CoderZS閱讀 74,788評論 10 217