详解在idea 中使用Mybatis Generator逆向工程生成代码

 更新时间:2020年12月15日 09:26:09   作者:殇灬央  
这篇文章主要介绍了在idea 中使用Mybatis Generator逆向工程生成代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

到此这篇关于详解在idea 中使用Mybatis Generator逆向工程生成代码的文章就介绍到这了,更多相关MAVEN完成 Mybatis 逆向工程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Eclipse查看开发包jar里源代码的方法

    Eclipse查看开发包jar里源代码的方法

    这篇文章主要介绍了Eclipse查看开发包jar里源代码的方法的相关资料,需要的朋友可以参考下
    2017-07-07
  • 浅谈使用java实现阿里云消息队列简单封装

    浅谈使用java实现阿里云消息队列简单封装

    这篇文章主要介绍了浅谈使用java实现阿里云消息队列简单封装,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java多线程Condition接口原理介绍

    Java多线程Condition接口原理介绍

    这篇文章主要介绍了Java多线程Condition接口原理介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 浅析Java中接口和抽象类的七大区别

    浅析Java中接口和抽象类的七大区别

    Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象、封装、继承和多态。本文介绍的接口和抽象类就是面向对象编程中“抽象”的具体实现。本文也将为大家详细讲一下二者的区别,需要的可以参考一下
    2021-12-12
  • java实现本地日期时间处理

    java实现本地日期时间处理

    这篇文章主要介绍了本地日期时间处理的程序,实现了下面的功能,大家参考使用吧
    2014-01-01
  • java编程实现获取服务器IP地址及MAC地址的方法

    java编程实现获取服务器IP地址及MAC地址的方法

    这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下
    2015-11-11
  • 在windows下揪出java程序占用cpu很高的线程并完美解决

    在windows下揪出java程序占用cpu很高的线程并完美解决

    这篇文章主要介绍了在windows下揪出java程序占用cpu很高的线程并完美解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • JHipster如何修改JDL中的entity

    JHipster如何修改JDL中的entity

    这篇文章主要介绍了JHipster如何修改JDL中的entity问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SpringBoot中使用@Scheduled注解创建定时任务的实现

    SpringBoot中使用@Scheduled注解创建定时任务的实现

    这篇文章主要介绍了SpringBoot中使用@Scheduled注解创建定时任务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • MyBatis 多表操作的实现

    MyBatis 多表操作的实现

    这篇文章主要介绍了MyBatis 多表操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论