通过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

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE generatorConfiguration
3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
5 <generatorConfiguration>
6 <!-- 若想单独配置属性,可将其配入properties后 通过此方式导入属性 ${userId} -->
7 <!-- <properties resource="generator.properties"></properties>-->
8
9 <!-- 数据库驱动: 若之前未在build里配置数据库驱动包,可选择本地硬盘上面的数据库驱动包-->
10 <classPathEntry location="D:\Maven\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>
11
12 <!-- targetRuntime 默认为MyBatis3DynamicSql,该值不会生成xml文件, 可选择Mybatis3 -->
13 <context id="default" targetRuntime="Mybatis3">
14
15 <!-- optional,旨在创建class时,对注释进行控制 -->
16 <commentGenerator>
17 <!-- 是否去除自动生成的注释 true:是 : false:否 -->
18 <property name="suppressAllComments" value="true" />
19 </commentGenerator>
20
21 <!-- 配置数据库连接 -->
22 <jdbcConnection
23 driverClass="com.mysql.jdbc.Driver"
24 connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai"
25 userId="root"
26 password="123456">
27 </jdbcConnection>
28
29 <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
30 <javaTypeResolver >
31 <property name="forceBigDecimals" value="false" />
32 </javaTypeResolver>
33
34 <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
35 targetPackage 指定生成的model生成所在的包名
36 targetProject 指定在该项目下所在的路径
37 -->
38 <javaModelGenerator targetPackage="com.demo.dao.pojo" targetProject="src/main/java">
39 <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
40 <property name="enableSubPackages" value="true"/>
41 <!-- 是否对model添加 构造函数 -->
42 <property name="constructorBased" value="false"/>
43 <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
44 <property name="trimStrings" value="false"/>
45 <!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
46 <property name="immutable" value="true"/>
47 </javaModelGenerator>
48
49 <!-- 生成映射文件的包名和位置-->
50 <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
51 <property name="enableSubPackages" value="false"/>
52 </sqlMapGenerator>
53
54 <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
55 type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
56 type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
57 type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
58 -->
59 <javaClientGenerator targetPackage="com.demo.dao.mapper" targetProject="src/main/java" type="XMLMAPPER">
60 <property name="enableSubPackages" value="false"/>
61 </javaClientGenerator>
62 <table tableName="aging_demotion" domainObjectName="AgingDemotion"
63 enableCountByExample="false" enableUpdateByExample="false"
64 enableDeleteByExample="false" enableSelectByExample="false"
65 selectByExampleQueryId="false">
66 <!-- 插入时自动返回主键ID -->
67 <generatedKey column="aging_demotion_id" sqlStatement="Mysql" identity="true" />
68 </table>
69
70 <table tableName="aging_listener" domainObjectName="AgingListener"
71 enableCountByExample="false" enableUpdateByExample="false"
72 enableDeleteByExample="false" enableSelectByExample="false"
73 selectByExampleQueryId="false">
74 </table>
75
76 <table tableName="aging_state" domainObjectName="AgingState"
77 enableCountByExample="false" enableUpdateByExample="false"
78 enableDeleteByExample="false" enableSelectByExample="false"
79 selectByExampleQueryId="false">
80 </table>
81 </context>
82 </generatorConfiguration>

XML配置信息可参考mybatis官网:http://mybatis.org/generator/configreference/xmlconfig.html

3.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值。

如果有错误或者更优化的解决方案,欢迎大家在评论区留言探讨。

也可以给我的个人公众号私信留言。

idea 中使用Mybatis Generator逆向工程生成代码的更多相关文章

  1. 在IDEA中使用MyBatis Generator逆向工程生成代码

    本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xml 文件 在pom.xml增加以下插件: <build> <finalName ...

  2. 在IDEA中使用MyBatis Generator自动生成代码

    转载自 https://blog.csdn.net/hua_faded/article/details/78900780 一.配置Maven pom.xml 文件 在pom.xml增加以下插件:   ...

  3. idea中mybatis generator自动生成代码配置 数据库是sqlserver

    好长时间没有写博客了,最近公司要用java语言,开始学习java,属于初学者,今天主要记录一下mybatis generator自动生成代码,首先在如下图的目录中新建两个文件,如下图 generato ...

  4. SpringBoot 添加mybatis generator 自动生成代码插件

    自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...

  5. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...

  6. IDEA Maven Mybatis generator 自动生成代码

    IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...

  7. Mybatis generator 逆向生成代码

    Mybatis generator 逆向生成代码 简单介绍 本文介绍用mybatis逆向生成javaben dao接口 1.创建maven项目 创建相应的包 附上项目创建完成的图片 然后在pom.xm ...

  8. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  9. 【MyBatis学习15】MyBatis的逆向工程生成代码

    1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需 ...

随机推荐

  1. DP中环形处理 +(POJ 1179 题解)

    DP中环形处理 对于DP中存在环的情况,大致有两种处理的方法: 对于很多的区间DP来说,很常见的方法就是把原来的环从任意两点断开(注意并不是直接删掉这条边),在复制一条一模一样的链在这条链的后方,当做 ...

  2. Centos快速安装Docke

    预备 删除旧docker # 删除旧docker $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-co ...

  3. phpstudy搭建网站只能访问首页,其他路由访问404

    今天博主遇到了一个很奇葩的问题,电脑下载了一个phpstudy搭建网站,框架用的是tp,但是除了输入域名能访问,其他页面都访问不了 经过博主的疯狂问大佬,以及百度,终于解决了这个问题 这次出现问题的原 ...

  4. C++中内存布局 以及自由存储区和堆的理解

    文章搬运自https://www.cnblogs.com/QG-whz/p/5060894.html,如有侵权请告知删除 当我问你C++的内存布局时,你大概会回答: "在C++中,内存区分为 ...

  5. div可以滚动但不显示滚动条

    首先有3个div, 第1个,固定大小是200*200(单位为px,下同) 第2个,不固定大小,其大小要用第3个div把个撑开,但是这个div必需要有滚动条, 第3个,固定大小与第1个div保持一致20 ...

  6. 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!

    一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...

  7. 关于Camtasia2020安装完成之后无法运行问题的解决方法

    在录像编辑软件Cmtasia更新到了2020版本之后,有部分小伙伴们遇到了这样的问题:在我们安装好软件之后,居然无法运行.今天小编就给大家介绍一下该如何解决这个问题. 方法一: 第一步,选中桌面上Ca ...

  8. HDU4632 Palindrome subsequence

    标签(空格分隔): 区间qp Palindrome subsequence \[求一个string的 回文子序列 的个数 \] 少废话,上代码. #include<bits/stdc++.h&g ...

  9. C++之父接受采访:对 C++ 成功的关键和发展历程进行了回顾

    C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一. 到 2020 年 9 月为止,C++ 是仅次于 C 语言.Java 和 Python,位于全球第四的编程语言.根据最新的 ...

  10. 跟阿斌一起学鸿蒙(2). Ability vs App?

    在进一步实践之前,需要先弄明白一个概念:Ability. 不知道你有没有注意到,使用鸿蒙开发工具DevEco Studio创建项目时,我们选择创建的是一个个Ability. 这是为什么呢? 1. 鸿蒙 ...