概述
目录
- MyBatis代码生成工具
- 使用MyBatis Generator
- Maven插件运行代码生成器
MyBatis代码生成工具
在我们使用MyBatis的过程中,我们往往需要编写实体类和单表CRUD代码,在表不多的时候,可能还好,但是一但表多了,那将会是一件相当麻烦的事情。幸运的是,MyBatis官方代码生成器(MyBatis Generator)可以帮助我们解决这个问题,MyBatis Generator(简称MBG)可以通过数据库表直接生成实体类、单表CRUD代码、mapper.xml文件。下面我们就来看一下如何使用MyBatis Generator。
使用MyBatis Generator
1、添加依赖
使用MBG,主要是以下两个依赖,一个是mybatis的spring boot依赖和MyBatis Generator的依赖。如果你只是单纯想用 MyBatis代码生成器,那么甚至可以不用mybatis-spring-boot-starter依赖
<!--SpringBoot整合MyBatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- MyBatis 生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<!--Mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2、添加了依赖,我们就需要进行相关的配置
在application.yml中对数据源和MyBatis的mapper.xml文件路径进行配置
#数据库连接
spring.datasource.url=jdbc:mysql://192.168.91.128:3306/mytest?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#指定本地mapper.xml文件的存放位置
mybatis.mapper-locations=classpath:dao/*.xml
3、在启动类添加@MapperScan注解,指定扫描的路径
路径只要是包含你Mapper接口的路径都可以,范围越小,效率越高
@MapperScan("com.example.demo2")
public class Demo2Application {
public static void main(String[] args) {
SpringApplication.run(Demo2Application.class, args);
}
}
4、上面就配置好了mybatis,然后我们就可以在resources目录下编写代码生成器的xml配置文件
下面是我编写的一个代码生成器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>
<!--
context:代码生成规则配置的上下文
id:标识
targetRuntime: MyBatis3Simple 只会生成基本的CRUD操作
-->
<context id="DB2Tables" targetRuntime="MyBatis3Simple">
<!--commentGenerator:注释生成策略-->
<commentGenerator>
<!--suppressAllComments:是否阻止注释生成-->
<property name="suppressAllComments" value="true"/>
<!--suppressDate:是否阻止时间戳生成-->
<property name="suppressDate" value="true"/>
</commentGenerator>
<!--jdbcConnection:数据库的链接属性-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8"
userId="root"
password="root">
<!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
<!--javaTypeResolver:java类型转换策略-->
<javaTypeResolver >
<!-- forceBigDecimals
false:如果数据库中的字段类型为numeric或者decimal,在代码生成的时候根据数据库中设定的长度自动选择java类型进行转换
true:直接使用java.math.BigDecimal类型-->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--domain生成策略;targetPackage:生成到哪个包下面,targetProject:生成到哪个项目目录下面-->
<javaModelGenerator targetPackage="com.example.childdemo.model" targetProject="src/main/java">
<!--<property name="enableSubPackages" value="true" />-->
<!--表示是否修剪字符串(去掉空格-->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--sqlMapGenerator:映射文件生成策略
targetPackage:生成到哪个包下面,targetProject:生成到哪个项目目录下面
-->
<sqlMapGenerator targetPackage="com.example.childdemo.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--mapper接口生成策略
type:ANNOTATEDMAPPER:注解的形式
XMLMAPPER:xml映射的形式-->
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="com.example.childdemo.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--指定要生成代码的表
domainObjectName:设置表对应的domain实体类生成的名称
-->
<table tableName="productdir" domainObjectName="ProductDir"></table>
</context>
</generatorConfiguration>`
5、运行代码生成器
下面我们通过编码和配置文件运行代码生成器
编写好配置文件之后,我们就可以写个类用于生成代码,直接运行main方法即可生成所有代码,代码如下:
public class Generator {
public static void main(String[] args) throws Exception {
//MBG 执行过程中的警告信息
List<String> warnings = new ArrayList<String>();
//当生成的代码重复时,覆盖原代码
boolean overwrite = true;
//读取我们的 MBG 配置文件
InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(is);
is.close();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
//创建 MBG
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
//执行生成代码
myBatisGenerator.generate(null);
//输出警告信息
for (String warning : warnings) {
System.out.println(warning);
}
}
}
运行main方法,就会帮我们生成相应的实体类和mapper接口了
Maven插件运行代码生成器
除了上面的方法,我们还可以通过Maven插件运行代码生成器
如果使用Maven插件,那么不需要引入mybatis-generator-core依赖,只需要引入一个Maven的插件mybatis-generator-maven-plugin即可,在pom文件添加以下plugin:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!-- 输出详细信息 -->
<verbose>true</verbose>
<!-- 覆盖生成文件 -->
<overwrite>true</overwrite>
<!-- 定义配置文件 -->
<configurationFile>${basedir}/src/main/resources/generator-configuration.xml</configurationFile>
</configuration>
<executions>
<execution>
<id>MyBatis Generate</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
</plugin>
插件配置完毕之后,使用下面的命令即可运行:
mvn mybatis-generator:generate
注意:插件的版本要与连接数据库的版本对应,否则会报错
我们也可以在编译器的maven选项直接运行,如下
运行后就可以得到相应的代码了,如下
最后
以上就是害羞裙子为你收集整理的不要再手写实体类和Mapper了,使用MyBatis代码生成工具一键生成!的全部内容,希望文章能够帮你解决不要再手写实体类和Mapper了,使用MyBatis代码生成工具一键生成!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复