MBG真香 Spring Boot集成Mybatis Generator插件
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插件相关推荐
- Spring Boot 集成 Mybatis 实现双数据源
转载自 Spring Boot 集成 Mybatis 实现双数据源 这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源 ...
- spring boot 集成Mybatis时 Invalid bound statement (not found)
spring boot 集成Mybatis时,运行提示 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- Spring Boot 集成MyBatis
Spring Boot 集成MyBatis Spring Boot 系列 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring ...
- Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper
1. 概述 本文的内容包括如下内容: Spring Boot集成mybatis Spring Boot集成pagehelper分页插件,定义分页的相关类 实现工具类:model转dto,实现数据层和传 ...
- Spring Boot集成pagehelper分页插件
Spring Boot集成pagehelper分页插件 1.在pom.xml中添加pagehelper依赖 2.修改配置文件 3.修改Controller里面的查询方法 4.返回分页信息 1. 修改U ...
- spring boot集成mybatis+事务控制
一下代码为DEMO演示,采用注解的方式完成Spring boot和Mybatis的集成,并进行事物的控制 数据源的配置: 1 spring.datasource.url=jdbc:mysql://lo ...
- Spring Boot 集成 MyBatis 与 c3p0
*对应的目录结构 一.添加依赖 <!-- 添加对 mybatis 的依赖 --><dependency><groupId>org.mybatis.spring.bo ...
- mybatis映射longtext类型数据_全网首例全栈实践(五)Spring Boot 集成Mybatis
一.概述 我们的Spring Boot后续项目使用的都是MySQL.Spring Boot连接MySQL的方式包括JDBC,Spring JPA,Hibeirnate,Mybatis等,本文主要带大家 ...
- Spring Boot 集成 MyBatis和 SQL Server实践
文章共 509字,阅读大约需要 2分钟 ! 概 述 Spring Boot工程集成 MyBatis来实现 MySQL访问的示例我们见过很多,而最近用到了微软的 SQL Server数据库,于是本文则给 ...
最新文章
- 【算法知识】详解希尔排序算法
- 【转】修饰符new将父类中的该方法隐藏掉有什么意义 不隐藏有什么弊端
- 【clickhouse】clickhouse 最佳实践
- java三目表达式_史上最强《Java 开发手册》泰山版王者归来
- 世界计算机模拟 波粒,光的波粒二象性的计算机模拟.pdf
- java kdj_基于Java语言开发的个性化股票分析技术随机指数[KDJ].doc
- linux下获取程序所在目录绝对路径
- Deep Speaker代码解析
- Win10(Win7)安装医学Mimics16.0和Mimics19软件安装教程
- Java使用WebService调用远程服务wsdl的方法,搭建一个demo,简单易用的教程
- VUE-日期选择器-结束时间开始时间
- 企业版高德地图开发者账号审请流程
- 字符串分隔StringUtils.delimitedListToStringArray
- 放大器的传递函数_运放全差分放大器实现单端与平衡的相互转换
- matlab第四章图像复原与重建
- mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库
- java ctr_分组密码_计数器(CTR)模式_原理及java实现
- 页脚设置页码(首页无页码,从第二页开始页码为1)
- osx制作u盘安装盘
- matlab里晶闸管,基于MATLAB的晶闸管-直流电动机控制系统的仿真研究