我是靠谱客的博主 害羞裙子,这篇文章主要介绍不要再手写实体类和Mapper了,使用MyBatis代码生成工具一键生成!,现在分享给大家,希望可以做个参考。

目录

    • 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依赖

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!--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文件路径进行配置

复制代码
1
2
3
4
5
6
7
8
9
#数据库连接 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接口的路径都可以,范围越小,效率越高

复制代码
1
2
3
4
5
6
7
8
9
@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

内容如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?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&amp;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方法即可生成所有代码,代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<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>

插件配置完毕之后,使用下面的命令即可运行:

复制代码
1
2
mvn mybatis-generator:generate

注意:插件的版本要与连接数据库的版本对应,否则会报错

我们也可以在编译器的maven选项直接运行,如下

在这里插入图片描述

运行后就可以得到相应的代码了,如下

在这里插入图片描述

最后

以上就是害羞裙子最近收集整理的关于不要再手写实体类和Mapper了,使用MyBatis代码生成工具一键生成!的全部内容,更多相关不要再手写实体类和Mapper了内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(105)

评论列表共有 0 条评论

立即
投稿
返回
顶部