通过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. javaScript高级程序设计.pdf && 你不知道的JavaScript

    转: JavaScript高级程序设计 链接:https://pan.baidu.com/s/1iRQ8FjpJqutZJzgdJ8ZBKA 提取码:ndnp 你不知道的JavaScript 链接:h ...

  2. shell脚本快速入门----shell基本语法总结

    1.#!脚本的开头 #!/bin/bash 2.脚本属性 添加可执行属性,chmod +x 或使用"."运行,例如运行当前目录下的a.sh 可执行命令 ". ./a.sh ...

  3. OWASP固件安全性测试指南

    OWASP固件安全性测试指南 固件安全评估,英文名称 firmware security testing methodology 简称 FSTM.该指导方法主要是为了安全研究人员.软件开发人员.顾问. ...

  4. css3系列之box-sizing

    box-sizing box-sizing: 俗称ie6 的混杂模式的盒子模型.  首先来了解一下 ie6 的混杂模式,和我们常用的 盒子模型有什么不一样 正常模式下: 我们设置的 width  和  ...

  5. .NET可视化权限功能界面设计

    权限功能是信息系统不可或缺的重要部分,一个优秀的权限设计可以使开发工作事半功倍,给使用者带来良好的使用体验. 企业做生意,都会聘请员工,若是员工数量较多,"权限管理"必不可少,这样 ...

  6. iOS UITextFeild获取高亮部分的长度

    获取原因: 中英文混输时,会遇到长度统计不准的问题. 获取方法: NSString *toBeString = textField.text; NSString *lang = [[UITextInp ...

  7. Java基础教程——UDP编程

    UDP:User Datagram Protocol,用户数据报协议 服务端: import java.net.*; import java.io.*; public class UdpServer ...

  8. 三:robot framework常用关键字

    该部分介绍的是内置库:Builtin,估不需要导入,即可使用 1.RF中定义一个变量: ${XXX}   XXX表示:变量名 *** Settings *** *** Test Cases *** 定 ...

  9. Linux下的MediaWiki的部署启动遇到的问题与解决方案

    1. MySQL安装不成功 解决方案:https://bbs.csdn.net/topics/394377536 2. no space left on device ubuntu 解决方案:http ...

  10. Steps 组件的设计与实现

    NutUI 组件源码揭秘 前言 本文的主题是 Steps 组件的设计与实现.Steps 组件是 Steps 步骤和 Timeline 组件结合的组件,在此之前他们是两个不同的组件,在 NutUI 最近 ...