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: 创建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 能帮助我们自动生成数据库对应的POJOs,DAOs和Mapper.xml。并实现了一些 基本的增删改查接口以及其对应的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">
<!--根节点 -->
<generatorConfiguration>
  <!--properties resource 导入配置文件,可以把 一些常量比如 数据库的用户名,密码,url写在里面。如果想使用配置文件则可以直接在这里填写完整-->
  <properties resource="config.properties"/>
  <classPathEntry  location="D:\java\lib\mysql\mysql-connector-java-5.1.44-bin.jar" /><!--驱动包的绝对路径-->    
  

  <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,当数据库表名区分大小写时,可以将该属性设置为true -->
      <property name="caseSensitive" value="true"/>
    </plugin>

    <!--读取 property 内填写的值-->
    <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 但实践中发现会出错,提示无法找到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 实现业务逻辑。
@RestController
public class TestController {

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

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


成功运行springBoot 可以看到其内置的tomcat是在8080端口, 所以要注意8080端口不能被其它应用占用
4.3 访问浏览器

遇到的坑:
1:从springBoot官网下载的jar,导入进eclipse后,application.java 会生成在 以项目名 命名的包下。application.java 一定要放在根目录下,否则controller内的方法都无法运行。会产生404错误。解决方案: 把application.java 移动到 src/main/java 下。
2:mybatis.mapper 初始化失败,是因为配置的加载顺序导致的。1.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(六):如何优雅的使用mybatis(介绍了SpringBoot整合Mybatis的两种方式,本文主要的参考文档,感谢前辈们)
TKmybatis框架介绍和原理分析
SpringBoot+MyBatis通用Mapper3实践浅析

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容