Mybatis中文官网对mybatis-generator的介绍:http://www.mybatis.cn/archives/885.html

Mybatis官网对mybatis-generator的介绍:http://mybatis.org/generator/index.html

mybatis-generator配置文件教程:http://mybatis.org/generator/configreference/xmlconfig.html

1、搭建Spring Boot项目

由于我们的目标是在Spring Boot项目中集成Mybatis Generator插件,因此需要先搭建一个Spring Boot项目,请参考这篇文章:教科书级别 IDEA中用Maven手工搭建Spring Boot项目 搭建过程十分简单,且搭建完的项目也很精简,没有任何多余的文件。

这里我搭建了一个名为springboot-mbg的项目,下面我将在该项目上演示如何集成Mybatis Generator插件!

2、在pom.xml中引入插件

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.6</version><configuration><!--  MBG配置文件路径  --><configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile><verbose>true</verbose><!-- 是否覆盖,true表示会替换生成的JAVA文件,false则不覆盖 --><overwrite>true</overwrite></configuration></plugin></plugins>
</build>

3、在pom.xml中定义properties

<properties><!--  Java接口和实体类生成路径targetMapperPackage是生成的接口包名targetModelPackage是生成的实体类包名--><targetJavaProject>${basedir}/src/main/java</targetJavaProject><targetMapperPackage>com.bobo.mapper</targetMapperPackage><targetModelPackage>com.bobo.entity</targetModelPackage><!--  XML生成路径  --><targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject><targetXMLPackage>mapper</targetXMLPackage>
</properties>

4、在pom.xml中引入mysql驱动依赖

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

5、配置mysql连接信息

在src/main/resources目录下新建jdbc.properties文件,这些属性会在generatorConfig.xml用到

jdbc.driver-class-name: com.mysql.cj.jdbc.Driver
jdbc.url: jdbc:mysql://localhost:3306/mybatis_study?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
jdbc.username: root
jdbc.password: ok
jdbc.location=D:/dev/maven/repo/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar

6、Mybatis Generator核心配置文件generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--下列所有xml标签顺序不能颠倒、不能多不能少-->
<generatorConfiguration><!--  mysql数据源配置文件路径,0或1个  --><properties resource="jdbc.properties"/><!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包,0或多个--><classPathEntry location="${jdbc.location}"/><!--1或多个,用于指定生成一组对象的环境defaultModelType:如何生成实体类1、conditional:这是默认值,这个模型和下面的hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。2、flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。这种模型最简单,推荐使用。3、hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段,则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系targetRuntime:用于指定生成的代码的运行时环境1、MyBatis3:*这是默认值*2、MyBatis3Simple3、Ibatis2Java24、Ibatis2Java5如果你希望不生成和Example查询有关的内容,那么可以按照如下进行配置使用MyBatis3Simple可以避免在后面的<table>中逐个进行配置--><context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat"><!--autoDelimitKeywords,当表名或者字段名为SQL关键字的时候,可以设置该属性为true,MBG会自动给表名或字段名添加分隔符--><property name="autoDelimitKeywords" value="true"/><!--beginningDelimiter和endingDelimiter的默认值为双引号("),在Mysql中不能这么写,所以还要将这两个默认值改为反单引号(`)例如:select * from `user info`--><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><!--插件用于扩展或修改通过MyBatis Generator (MBG)代码生成器生成的代码--><plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin><commentGenerator><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true"/><!--阻止生成的注释包含时间戳--><property name="suppressDate" value="true"/></commentGenerator><jdbcConnection driverClass="${jdbc.driver-class-name}"connectionURL="${jdbc.url}"userId="${jdbc.username}"password="${jdbc.password}"><!--解决(当不同数据库中存在相同的表名时,生成的代码有问题)的问题--><property name="nullCatalogMeansCurrent" value="true"/></jdbcConnection><!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integertrue,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--  实体类生成路径  --><javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/><!--  XML生成路径  --><sqlMapGenerator targetPackage="${targetXMLPackage}" targetProject="${targetResourcesProject}"/><!--  接口生成路径  --><javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" type="XMLMAPPER"/><!--生成全部的表名,用%--><!--配置表名t_qbi_psh_task和对象名QbiPshTask的映射关系--><table tableName="t_qbi_psh_task" schema="lbi_system_db" domainObjectName="QbiPshTask"><!--表示将前缀为F的列名,替换成空字符串,这样在生成属性的时候,就不会带f了--><columnRenamingRule searchString="^F" replaceString=""/></table><table tableName="t_qbi_psh_task_trigger_record" schema="lbi_system_db" domainObjectName="QbiPshTaskTriggerRecord"><columnRenamingRule searchString="^F" replaceString=""/></table></context>
</generatorConfiguration>

7、双击执行Mybatis Generator插件

执行成功后,将自动生成实体类、Mapper接口和Mapper映射文件,最终整个项目结构如下图所示。

不得不说,用Mybatis Generator自动生成代码真香啊!

8、再集成Mybatis

引入Mybatis与Spring Boot整合的依赖。

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version>
</dependency>

依赖引入之后,接下来就是在application.yml中配置数据源、mybatis mapper.xml的路径、实体别名的路径和日志级别了。

spring:datasource:url: jdbc:mysql://localhost:3306/lbi_system_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTCdriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: ok
mybatis:mapper-locations: classpath:mapper/*Mapper.xmltype-aliases-package: com.bobo.entity
logging:level:com.bobo.mapper: debug

最后,需要在所有的Mapper接口上打上@Mapper注解,表明它是一个Mapper,Mybatis在运行时需要找到所有的Mapper并为它们生成代理类。

也可以不在所有的Mapper接口上打注解,在Spring Boot启动类上打一个@MapperScan("com.bobo.mapper")注解同样可以。

9、Mybatis Generator生成的Example类的用法

  • Example用于动态创建where语句
  • Criteria静态内部类保存了用and语句连接的条件列表
  • Example的createCriteria方法或or方法(更推荐)可以创建Criteria
  • 多个Criteria对象之间用or连接,同一个Criteria对象内部用and连接

且看如下示例。

QbiPshTaskExample example = new QbiPshTaskExample();
example.or().andTaskNameLike("测试任务0%");
example.or().andTaskNameLike("测试任务1%");
List<QbiPshTask> qbiPshTasks = qbiPshTaskMapper.selectByExample(example);

最终生成的where语句为:WHERE ( Ftask_name like ? ) or( Ftask_name like ? )

如果生成的Example类无法满足我们的需求呢?比如and and and ( or or)这种where条件。

我们修改Example类的内部类GeneratedCriteria,以及xml文件中的where条件。

MBG真香 Spring Boot集成Mybatis Generator插件相关推荐

  1. Spring Boot 集成 Mybatis 实现双数据源

    转载自   Spring Boot 集成 Mybatis 实现双数据源 这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源 ...

  2. spring boot 集成Mybatis时 Invalid bound statement (not found)

    spring boot 集成Mybatis时,运行提示 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  3. Spring Boot 集成MyBatis

    Spring Boot 集成MyBatis Spring Boot 系列 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring ...

  4. Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper

    1. 概述 本文的内容包括如下内容: Spring Boot集成mybatis Spring Boot集成pagehelper分页插件,定义分页的相关类 实现工具类:model转dto,实现数据层和传 ...

  5. Spring Boot集成pagehelper分页插件

    Spring Boot集成pagehelper分页插件 1.在pom.xml中添加pagehelper依赖 2.修改配置文件 3.修改Controller里面的查询方法 4.返回分页信息 1. 修改U ...

  6. spring boot集成mybatis+事务控制

    一下代码为DEMO演示,采用注解的方式完成Spring boot和Mybatis的集成,并进行事物的控制 数据源的配置: 1 spring.datasource.url=jdbc:mysql://lo ...

  7. Spring Boot 集成 MyBatis 与 c3p0

    *对应的目录结构 一.添加依赖 <!-- 添加对 mybatis 的依赖 --><dependency><groupId>org.mybatis.spring.bo ...

  8. mybatis映射longtext类型数据_全网首例全栈实践(五)Spring Boot 集成Mybatis

    一.概述 我们的Spring Boot后续项目使用的都是MySQL.Spring Boot连接MySQL的方式包括JDBC,Spring JPA,Hibeirnate,Mybatis等,本文主要带大家 ...

  9. Spring Boot 集成 MyBatis和 SQL Server实践

    文章共 509字,阅读大约需要 2分钟 ! 概 述 Spring Boot工程集成 MyBatis来实现 MySQL访问的示例我们见过很多,而最近用到了微软的 SQL Server数据库,于是本文则给 ...

最新文章

  1. 【算法知识】详解希尔排序算法
  2. 【转】修饰符new将父类中的该方法隐藏掉有什么意义 不隐藏有什么弊端
  3. 【clickhouse】clickhouse 最佳实践
  4. java三目表达式_史上最强《Java 开发手册》泰山版王者归来
  5. 世界计算机模拟 波粒,光的波粒二象性的计算机模拟.pdf
  6. java kdj_基于Java语言开发的个性化股票分析技术随机指数[KDJ].doc
  7. linux下获取程序所在目录绝对路径
  8. Deep Speaker代码解析
  9. Win10(Win7)安装医学Mimics16.0和Mimics19软件安装教程
  10. Java使用WebService调用远程服务wsdl的方法,搭建一个demo,简单易用的教程
  11. VUE-日期选择器-结束时间开始时间
  12. 企业版高德地图开发者账号审请流程
  13. 字符串分隔StringUtils.delimitedListToStringArray
  14. 放大器的传递函数_运放全差分放大器实现单端与平衡的相互转换
  15. matlab第四章图像复原与重建
  16. mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库
  17. java ctr_分组密码_计数器(CTR)模式_原理及java实现
  18. 页脚设置页码(首页无页码,从第二页开始页码为1)
  19. osx制作u盘安装盘
  20. matlab里晶闸管,基于MATLAB的晶闸管-直流电动机控制系统的仿真研究

热门文章

  1. 微信自动下载app(安卓跳转默认浏览器 苹果跳转苹果商店App Store)的实现教程尽在366API
  2. Git教程---Windows安装及命令使用(详细例子)
  3. 华为云AOM 2.0版本发布
  4. 软件建模与分析【二】
  5. 成长的NFC移动支付和非接触式支付
  6. HTTP状态码206
  7. JS isNaN函数
  8. 3dmax面片建模给面片增加厚度的一种方式
  9. Three.js应用场景以及开发前准备工作
  10. 二极管使用之反向续流