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 相關-->
    <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/
  • 選擇構建工具Maven 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ù)庫對應的POJOs,DAOs和Mapper.xml。并實現(xiàn)了一些 基本的增刪改查接口以及其對應的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文件
項目結構
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 導入配置文件,可以把 一些常量比如 數(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默認false,當數(shù)據(jù)庫表名區(qū)分大小寫時,可以將該屬性設置為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: 關于 targetPackage , 在resources中new package 但顯示的還是文件夾的樣式,于是我在targetPackage中填入了 mybatis/mapper 結果被編譯器教育。嘗試修改成 mybatis.mapper 即可
3: 在使用 mybatis generator 時無法生成,一直提示無法找到config.properties 文件。google大法+百度大法+重啟電腦大法+想念了一會周老師 后更新 eclipse 的generator插件后 解決。

4:SpringBoot 添加注解,并運行

4.1在application.java 處添加注解
@SpringBootApplication
@EnableScheduling  // 寫定時任務@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è)務邏輯。
@RestController
public class TestController {

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

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


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

遇到的坑:
1:從springBoot官網(wǎng)下載的jar,導入進eclipse后,application.java 會生成在 以項目名 命名的包下。application.java 一定要放在根目錄下,否則controller內(nèi)的方法都無法運行。會產(chǎn)生404錯誤。解決方案: 把application.java 移動到 src/main/java 下。
2:mybatis.mapper 初始化失敗,是因為配置的加載順序?qū)е碌摹?.2.0版本解決了該問題。解決方案:因為項目使用的是 spring boot 所以,導入的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實踐淺析

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 前言 最近做回后臺開發(fā),重新抓起以前學過的SSM(Spring+Spring MVC+Mybatis),但是發(fā)現(xiàn)配...
    Raye閱讀 6,644評論 15 79
  • Spring 技術筆記Day 1 預熱知識一、 基本術語Blob類型,二進制對象Object Graph:對象圖...
    OchardBird閱讀 1,078評論 0 2
  • 前言:學習SpringBoot不應該直接就是開始使用SpringBoot,如果直接拿來用肯定會有很多人不是很明白特...
    CoderZS閱讀 75,069評論 10 217

友情鏈接更多精彩內(nèi)容