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

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

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

(0)

相关推荐

  • Java编程第43讲——实现前端后一体的Web服务器

    原创编程实践2020-08-31 01:24:42 随着Web前端技术的迅猛发展,现在的Web开发已经明显分为两大阵营:Web前端和Web后端,接着UI设计又从Web前端分离出去,成为专门的团队.当我 ...

  • springcloud笔记之服务提供者与消费者

    文章目录 一.SpringCloud是什么? 二.使用步骤 1.构建环境 2.springcloud-provider-emp-8001 2.springcloud-consumer-emp-8001 ...

  • 第一个MyBatis程序(博客初写者)

    第一个Mybatis程序 一.环境: 1.JDK1.8 2.MYSQL5.7 3.IDEA 4.MAVEN 3.63 二.Mybatis认识: 1.查看官方文档 https://mybatis.org ...

  • Maven项目管理工具:Maven依赖

    Maven是一款优秀的依赖管理工具,那么什么是依赖呢? 通俗的说,如果一个Maven构建所产生的构件(例如Jar文件)被其他项目引用,那么该构件就是其他项目的依赖. 依赖声明 Maven坐标是依赖的前 ...

  • MyBatis Generator 自定义生成注释

    最近做项目,ORM 使用的是 MyBatis,为了偷懒,我自然而然的想到了使用 MyBatis Generator(MBG)来生成数据库表对应的实体代码和 Mapper 代码.于是做了如下的配置(对 ...

  • 制图小技巧丨巧用3D Map Generator快速生成地形神器

    又到了每周一的制图教室啦. 无论是建筑.规划还是景观专业,地形分析都会是我们经常用到的一类分析图.这类分析图的常规做法呢,就是先要获取地理数据,然后通过GIS.SU或者Rhino+GH生成场地模型,要 ...

  • postman使用教程9-点 code 按钮生成代码段

    前言 postman 可以生成各种语言的代码发送接口请求,对于会使用 postman 但python脚本还不熟练的小伙伴会很有帮助. 经常有小伙伴说:为什么我 postman 可以请求成功,用 pyt ...

  • MyBatis的逆向工程

    一.MyBatis逆向工程概述 MyBatis是目前很流行的持久层框架,很多企业都在采用.但是其复杂繁琐的配置,重复性的实体类创建等等,消耗了程序员大量的精力,同时有些地方如果一个细小的疏忽,可能导致 ...

  • 深度学习中的 Attention 机制总结与代码实现(2017-2021年)

    作者丨mayiwei1998 来源丨GiantPandaCV 编辑丨极市平台 极市导读 由于许多论文中的网络结构通常被嵌入到代码框架中,导致代码比较冗余.本文作者对近几年基于Attention网络的核 ...

  • 设计稿(UI视图)自动生成代码方案的探索

    设计稿(UI视图)自动生成代码方案的探索

  • Word中通过设置大纲级别生成自动目录

         作为一款经典办公软件,Office有太多的功能需要我们挖掘使用,它所具有的功能远远超越我们的想象,只要我们对使用Office中出现问题有一种"为伊消得人憔悴,衣带渐宽终不悔&quo ...

  • Node.js 中的异步 Generator 函数和 Websockets

    前端大全 3天前 以下文章来源于大前端技术之路 ,作者浥阳 大前端技术之路分享Web前端,Node.js.React Native等大前端技术栈精选 (给前端大全加星标,提升前端技能) 英文:Vale ...

  • 道家哲学叙事中的秦汉代宇宙生成观纵论

    文|西蜀无为堂 道家与道教是分属不同的概念系统.道家是以老庄思想为源头的哲学派系,道教则是指以老庄为始祖和崇奉对象的宗教团体.道家"综罗百代,广博精微",所以"仅用老庄是 ...