1. 项目环境
- IDEA 2020.1.4
- Maven 3.6
- JDK 1.8
- SpringBoot 2.x
- Mysql 5.7
项目文件在GitHub(欢迎star⭐):
https://github.com/Gang-bb/Gangbb-SpringBoot
如果您没有了解过Mybatis,推荐先看这个博客,对SpringBoot中使用Mybatis有一定认识
SpringBoot系列-- SpringBoot整合MyBatis
项目所使用到的sql文件放在github项目中(/src/main/resources目录下)
如有疑问或是建议,欢迎评论区留言或者QQ:949526365
2. 引入依赖
<!--mybatis数据库相关-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
添加插件:
<!--Mybatis生成器-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
<configuration>
<verbose>true</verbose>
<!--是否覆盖原有文件-->
<overwrite>true</overwrite>
</configuration>
</plugin>
3.生成基于.xml形式使用mybatis的各层文件
3.1 用generatorConfig.xml配置插件生成
3.1.1 编写generatorConfig.xml文件
在/src/main/resources目录下新建generatorConfig.xml文件
配置相关官方文档:http://mybatis.org/generator/configreference/xmlconfig.html
配置内容:
<?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>
<!-- 配置文件,放在resource目录下即可 -->
<!--数据库驱动个人配置-->
<!-- <classPathEntry-->
<!-- location="E:\\apache-maven-3.6.3\\repository\\mysql\\mysql-connector-java\\8.0.18"/>-->
<context id="MysqlTables" targetRuntime="MyBatis3">
<property name="autoDelimitKeywords" value="true"/>
<!--可以使用``包括字段名,避免字段名与sql保留字冲突报错-->
<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- optional,旨在创建class时,对注释进行控制 -->
<commentGenerator>
<!-- 是否去除自动生成日期的注释 true:是 : false:否 -->
<property name="suppressDate" value="true"/>
<!-- 是否去除所有自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/myemployees?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"
userId="root"
password="root">
<!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
<!--如果您使用的是Connector / J的8.x版,您可能会注意到生成器尝试为MySql信息模式(sys,information_schema,performance_schema等)中的表生成代码。
这可能不是您想要的!要禁用此行为,请将属性“nullCatalogMeansCurrent = true”添加到JDBC URL。-->
<!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
<!--数据库BigDecimals字段在java中定义-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.gangbb.gangbbspringbootmybatisgenerator.model.pojo"
targetProject="src/main/java">
<!-- 是否允许子包,即targetPackage.schemaName.tableName -->
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true"/>
<!-- 是否对类CHAR类型的列的数据进行trim操作 -->
<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
<property name="trimStrings" value="true"/>
<!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法。 取而代之的是类似constructorBased的类 -->
<property name="immutable" value="false"/>
</javaModelGenerator>
<!--生成mapper映射文件存放位置-->
<sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口
targetPackage/targetProject:同javaModelGenerator
type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.gangbb.gangbbspringbootmybatisgenerator.model.dao"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名-->
<table tableName="jobs" domainObjectName="Jobs"
enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
3.1.2 关于generatorConfig.xml配置文件的补充说明
说明1:
开头会爆红是正常的。
如果是在看不惯。
即可!
说明2:
配置文件最后的
标签属性详解1,schema:数据库的schema;
2,catalog:数据库的catalog;
3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
5,enableInsert(默认true):指定是否生成insert语句;
6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性)
13,modelType:参考context元素的defaultModelType,相当于覆盖;
14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性
注意,table里面很多参数都是对javaModelGenerator,context等元素的默认属性的一个复写;
3.1.3 开始生成文件
说明成功
生成的文件:
3.2 使用Idea插件生成
3.2.1 better-mybatis-generator插件简介
插件功能:在idea的database工具中使用,选择表,生成mybatis相关的代码。已支持的数据库:Mysql、Mysql8、Oracle、MariaDB。
插件官网地址:https://plugins.jetbrains.com/plugin/11021-better-mybatis-generator
github地址:https://github.com/kmaster/better-mybatis-generator
idea中插件市场搜不到的,可以本地安装插件,直接去插件官网下载很快,如何本地安装百度一搜就有!
安装地址:https://plugins.jetbrains.com/plugin/11021-better-mybatis-generator/versions
3.2.2 better-mybatis-generator使用
1.配置:
ps:每个文件放哪个文件看个人喜好和开发习惯,无标准硬性要求!
2.用idea连接到本地数据库:
填写数据库相关信息
3.选择要生成的表,右键
4.检查配置
右键后会弹出一个之前的配置页面。前面配置过了基本既没有什么问题。直接ok
5.成功
3.2.3 功能更强大的MyBatisCodeHelper-Pro(推荐使用)
可以支持更多定制化的生成持久层代码和service层代码,而且这只是它的一个小功能!更多功能查看:
github:https://github.com/gejun123456/MyBatisCodeHelper-Pro
配置界面丰富多彩,跟better-mybatis-generator基本配置差不多。主要就是选择保存文件的文件夹!
3.3 编码实现Mybatis Generator配置
该方法相对比较麻烦。本文暂不对该实现方法详解!
4.生成基于注解使用Mybatis的各层文件
4.1 用generatorConfig.xml配置插件生成
对比3.1中的步骤。只需修改generatorConfig.xml文件中的此部分即可,其他操作相同
生成结果:
5. 总结
- 插件生成可以提升效率和幸福感!
- 如果需要给生成的文件更多自定义注解和注释(例如:把数据库字段的注释生成到实体类对应的字段中)可以到官网文档了解!(3.1.1给出的网址)