详解在idea 中使用Mybatis Generator逆向工程生成代码
作者:殇灬央 时间:2023-09-09 17:05:24
通过MAVEN完成 Mybatis 逆向工程
1. POM文件中添加插件
在 pom 文件的build 标签中 添加 plugin 插件和 数据库连接 jdbc 的依赖。
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
</dependencies>
<configuration>
<!-- 输出详细信息 -->
<verbose>true</verbose>
<!-- 覆盖生成文件 -->
<overwrite>true</overwrite>
<!-- 定义配置文件 -->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
若不在pom文件中引入数据库连接依赖,也可在配置文件中通过本地方式启动连接。
2. 在自己定义的位置上添加配置文件 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>
<!-- 若想单独配置属性,可将其配入properties后 通过此方式导入属性 ${userId} -->
<!-- <properties resource="generator.properties"></properties>-->
<!-- 数据库驱动: 若之前未在build里配置数据库驱动包,可选择本地硬盘上面的数据库驱动包-->
<classPathEntry location="D:\Maven\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>
<!-- targetRuntime 默认为MyBatis3DynamicSql,该值不会生成xml文件, 可选择Mybatis3 -->
<context id="default" targetRuntime="Mybatis3">
<!-- optional,旨在创建class时,对注释进行控制 -->
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 配置数据库连接 -->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai"
userId="root"
password="123456">
</jdbcConnection>
<!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
targetPackage 指定生成的model生成所在的包名
targetProject 指定在该项目下所在的路径
-->
<javaModelGenerator targetPackage="com.demo.dao.pojo" targetProject="src/main/java">
<!-- 是否允许子包,即targetPackage.schemaName.tableName -->
<property name="enableSubPackages" value="true"/>
<!-- 是否对model添加 构造函数 -->
<property name="constructorBased" value="false"/>
<!-- 是否对类CHAR类型的列的数据进行trim操作 -->
<property name="trimStrings" value="false"/>
<!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
<property name="immutable" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
-->
<javaClientGenerator targetPackage="com.demo.dao.mapper" targetProject="src/main/java" type="XMLMAPPER">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<table tableName="aging_demotion" domainObjectName="AgingDemotion"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
<!-- 插入时自动返回主键ID -->
<generatedKey column="aging_demotion_id" sqlStatement="Mysql" identity="true" />
</table>
<table tableName="aging_listener" domainObjectName="AgingListener"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
<table tableName="aging_state" domainObjectName="AgingState"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
XML配置信息可参考mybatis官网:http://mybatis.org/generator/configreference/xmlconfig.html
3.通过maven启动
点击mybatis-generate:generate即可生成对应 java,mapper 和 pojo实体类。(若maven没有显示此插件,可点击左上角刷新)
4.Insert时返回自增主键
通过generatedKey 使其插入时返回ID,其值必须为数值型自增主键。
其逆向生成的代码为:
<selectKey keyProperty="agingDemotionId" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
也可自己通过这种方式实现返回自增ID。
<insert id="insert" useGeneratedKeys="true" keyProperty="agingDemotionId"
parameterType="com.jd.aging.presentation.domain.AgingDemotionEntity">
这种方式只适用于传入对象时,insert方法成功依旧返回的是 1, 不过传入的实体类对象中 主键 ID 的值 不再为 null, 而是获得该插入实体类的主键ID值。
来源:https://www.cnblogs.com/shangyang/archive/2020/12/14/14135811.html
标签:maven,Mybatis,逆向工程
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android实现画画板案例
2023-01-11 08:35:28
Android使用Room操作数据库流程详解
2023-03-21 21:00:31
JavaCV实战之调用摄像头基础详解
2022-07-15 02:14:10
![](https://img.aspxhome.com/file/2023/5/66625_0s.png)
构建多模块的Spring Boot项目步骤全纪录
2022-02-20 04:28:44
![](https://img.aspxhome.com/file/2023/1/113481_0s.png)
SpringBoot结合Redis配置工具类实现动态切换库
2022-04-15 14:14:13
Java 线程池原理深入分析
2023-01-30 19:59:43
![](https://img.aspxhome.com/file/2023/7/66227_0s.png)
SpringBoot使用Log4j过程详解
2023-05-03 22:44:12
C#实现简单的天气预报示例代码
2022-03-22 22:52:59
![](https://img.aspxhome.com/file/2023/9/104299_0s.png)
Java中实现文件预览的功能(实例代码)
2023-09-09 16:13:06
![](https://img.aspxhome.com/file/2023/0/80840_0s.png)
C#模板方法模式(Template Method Pattern)实例教程
2022-09-12 02:59:23
implicit关键字做自定义类型隐式转换的方法
2021-10-22 20:00:40
java多线程入门知识及示例程序
2021-11-30 03:17:58
OpenCV Java实现人脸识别和裁剪功能
2022-08-21 01:47:23
![](https://img.aspxhome.com/file/2023/9/79279_0s.jpg)
c#定时器使用示例详解
2022-01-09 03:31:05
android实现将位置信息写入JPEG图片文件
2023-04-16 21:26:00
Java线程池Executor用法详解
2022-02-13 01:21:16
![](https://img.aspxhome.com/file/2023/2/62812_0s.jpg)
Java实现简单的飞机大战游戏(控制主飞机篇)
2023-11-14 13:52:56
关于JAVA11中图片与BASE64相互转换的实现
2022-12-06 06:44:11
![](https://img.aspxhome.com/file/2023/6/73086_0s.png)
JDK1.8中ArrayList是如何扩容的
2023-01-20 19:04:47
![](https://img.aspxhome.com/file/2023/0/62700_0s.png)
Android开发中Launcher3常见默认配置修改方法总结
2023-08-28 06:43:43