-
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 <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>
3.通过maven启动
点击mybatis-generate:generate即可生成对应 java,mapper 和 pojo实体类。(若maven没有显示此插件,可点击左上角刷新)
通过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/p/14135811.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程