mybatis-generator自动生成代码(lombok带注释)
最近接触到的项目都会用到mybatis框架,会涉及到实体和表的映射,mapper以及mapper.xml的生成,mybatis-generator插件可以根据表结构自动生成实体、mapper、mapper.xml,大大简化了开发的工作量,现有的插件有点小缺陷,注释没有获取数据库字段的注释(mysql为例就是字段的comment),包括不支持lombok。
查阅相关资料,我这边修改了下mybatis-generator-core-1.3.7.jar包,生成的实体取数据库注释,并支持lombok,废话不多说,先看下效果。
建表语句:
CREATE TABLE `t_person` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',`name` varchar(50) NOT NULL COMMENT '姓名',`nick` varchar(50) NOT NULL COMMENT '昵称',`sex` varchar(50) NOT NULL COMMENT '性别',`age` int(5) NOT NULL COMMENT '年龄',`create_time` datetime NOT NULL COMMENT '创建时间',`modify_time` datetime DEFAULT NULL COMMENT '最后修改时间',PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
生成的实体类
package com.sicent.firm.bean;import java.util.Date; import lombok.Data;/*** t_person* @author yl.bu* @date 2019-05-30 22:01:47*/ @Data public class Person {/*** 自增ID*/private Long id;/*** 姓名*/private String name;/*** 昵称*/private String nick;/*** 性别*/private String sex;/*** 年龄*/private Integer age;/*** 创建时间*/private Date createTime;/*** 最后修改时间*/private Date modifyTime; }
下面讲一下实现方式:
第一步:新建类 MyBatisPlugin 继承 PluginAdapter,如下所示
package org.mybatis.generator.plugins;import java.util.Date; import java.util.List;import org.apache.commons.lang3.time.DateFormatUtils; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType; import org.mybatis.generator.api.dom.java.Interface; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.TopLevelClass; import org.mybatis.generator.internal.util.StringUtility;/*** @ClassName: MyBatisPlugin* @Description: mybatis-generator注释插件* @author buyl* @date 2019年5月30日 上午22:04:55* @Version V1.0*/ public class MyBatisPlugin extends PluginAdapter {@Overridepublic boolean validate(List<String> list) {return true;}@Overridepublic boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {boolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));System.out.println("hasLombok" + hasLombok);if (hasLombok) {// 添加domain的importtopLevelClass.addImportedType("lombok.Data");// 添加domain的注解topLevelClass.addAnnotation("@Data");}topLevelClass.addJavaDocLine("/**");String remarks = introspectedTable.getRemarks();if (StringUtility.stringHasValue(remarks)) {String[] remarkLines = remarks.split(System.getProperty("line.separator"));for (String remarkLine : remarkLines) {topLevelClass.addJavaDocLine(" * " + remarkLine);}}StringBuilder sb = new StringBuilder();sb.append(" * ").append(introspectedTable.getFullyQualifiedTable());topLevelClass.addJavaDocLine(sb.toString());sb.setLength(0);sb.append(" * @author ").append(System.getProperties().getProperty("user.name"));topLevelClass.addJavaDocLine(sb.toString());sb.setLength(0);sb.append(" * @date ");sb.append(getDateString());topLevelClass.addJavaDocLine(sb.toString());topLevelClass.addJavaDocLine(" */");return true;}@Overridepublic boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,IntrospectedTable introspectedTable, ModelClassType modelClassType) {field.addJavaDocLine("/**");String remarks = introspectedColumn.getRemarks();if (StringUtility.stringHasValue(remarks)) {String[] remarkLines = remarks.split(System.getProperty("line.separator"));for (String remarkLine : remarkLines) {field.addJavaDocLine(" * " + remarkLine);}}field.addJavaDocLine(" */");return true;}@Overridepublic boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {// 添加Mapper的importinterfaze.addImportedType(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Mapper"));// 添加Mapper的注解interfaze.addAnnotation("@Mapper");return true;}@Overridepublic boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,IntrospectedTable introspectedTable, ModelClassType modelClassType) {// 不生成getterboolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));return !hasLombok;}@Overridepublic boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,IntrospectedTable introspectedTable, ModelClassType modelClassType) {// 不生成setterboolean hasLombok = Boolean.parseBoolean(getProperties().getProperty("hasLombok", "false"));return !hasLombok;}protected String getDateString() {return DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");} }
第二步:压缩解压工具打开mybatis-generator-core-1.3.7.jar, 拷贝第一步编译后的class文件即MyBatisPlugin.class到org.mybatis.generator.plugins下,
懒的人可直接下载:https://download.csdn.net/download/littlelittlequie/11216644,如下图所示:
第三步:pom依赖,mybatis-generator-core-1.3.7.jar需要为上面替换过的,如果只能用原来的mybatis-generator-core-1.3.7.jar,只需要把第一步的java代码拷贝一份到项目中即可(有不懂得可以下来咨询我)
<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version> </dependency>
第四步:配置generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration><!-- 引入mysql-connector-java-5.1.47.jar位置 --><classPathEntrylocation="D:/workspaces/workspace/z-mybatis-generator/lib/mysql-connector-java-5.1.47.jar" /><!-- 是否去除自动生成的注释 true:是 : false:否 --><context id="DB2Tables" targetRuntime="MyBatis3"><plugin type="org.mybatis.generator.plugins.MyBatisPlugin" ><property name="hasLombok" value="true"/></plugin><commentGenerator><property name="suppressAllComments" value="true" /></commentGenerator><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/test" userId="root" password="123456"></jdbcConnection><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 生成model模型,对应的包路径,以及文件存放路径(targetProject),targetProject可以指定具体的路径 也可以使用“MAVEN”来自动生成,这样生成的代码会在target/generatord-source目录下 --><javaModelGenerator targetPackage="com.sicent.firm.bean" targetProject="z-mybatis-generator"><property name="enableSubPackages" value="true" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!--对应的mapper.xml文件 --><sqlMapGenerator targetPackage="com.sicent.firm.dao" targetProject="z-mybatis-generator"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- 对应的Mapper接口类文件 --><javaClientGenerator type="XMLMAPPER" targetPackage="com.sicent.firm.dao" targetProject="z-mybatis-generator"><property name="enableSubPackages" value="true" /></javaClientGenerator><table tableName="t_person" domainObjectName="Person" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="false"enableSelectByExample="true" selectByExampleQueryId="false"><property name="useActualColumnNames" value="false"/></table></context> </generatorConfiguration>
关键的地方就是配置插件:
<plugin type="org.mybatis.generator.plugins.MyBatisPlugin" ><property name="hasLombok" value="true"/></plugin>
第五步:执行命令 java -jar mybatis-generator-core-1.3.7.jar -configfile generatorConfig.xml -overwrite
或者eclipse或者idea安装mybatis-generator插件运行
插件安装以及其他涉及到的我就不详细讲了,有问题可随时找我。
转载于:https://www.cnblogs.com/kukudexin/p/10947657.html
mybatis-generator自动生成代码(lombok带注释)相关推荐
- mybatis generator 自动生成代码(带注释的实体类)
使用前提: 当你开发的java 项目或新模块的数据库有N张表操作时,这时要自己写实体类.dao.SqlMapper.xml等文件,如果有多个表,就是造成时间浪费降低开发效率,所以建议使用mybatis ...
- SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)
一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...
- SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件
我们这一一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我 ...
- Mybatis(1)——Mybatis Generator自动生成代码
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...
- 使用Mybatis Generator自动生成代码
MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器. 它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码. 它将内省数 ...
- maven mybatis generator自动生成代码
利用maven插件生成mybatis的 mapper dao entity 大大减少了工作量. 我的环境 Eclipse Java EE IDE for Web Developers. Version ...
- Eclipse使用mybatis generator自动生成代码
一.写在前面 Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件 ...
- 用mybatis的generator自动生成代码--坑我都走了一遍,后面的同学别踩了
先说什么是mybatis-generator? mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件. 步骤一:在pom文件中添加插件配 ...
- IDEA使用Mybatis Generator自动生成部分代码
IDEA使用Mybatis Generator自动生成部分代码 说明:使用Mybatis Generator代码生成配置,简单生成部分后端代码,包括(实体类,Mapper.Mapper.xml文件) ...
- mybatis generator自动生成sqlmap代码的不完善之处以及解决方法
mybatis generator自动生成sqlmap代码的不完善之处以及解决方法 参考文章: (1)mybatis generator自动生成sqlmap代码的不完善之处以及解决方法 (2)http ...
最新文章
- python组合数等于一个值_Python如何实现随机组合结果元组重复数量不能超过某个值?...
- Python(3) 进制转换
- 直播分享|邓文彬:如何在GPU/CPU/移动端高效训练和推断CNN网络
- error nr.1045 access denied for user 'root'@'localhost' (using passwd:no)
- ACL 2019开源论文 | 基于Attention的知识图谱关系预测
- JWT:我应该使用哪种签名算法?
- JavaScript基础部分
- 《C程序员从校园到职场》一2.2 破除错误观念
- QT实现Linux下系统监控小工具
- ETF:一种让美国“80后”趋之若鹜的投资工具
- 国外知名的技术网站、社区
- 如何查计算机的网络速度,电脑怎么查网速?教你精准测速的方法
- 华中数控808系统说明书_智能制造之高端数控系统龙头
- bootice添加黑苹果引导_非苹果电脑,怎样在不破坏Win10的前提下,安装苹果MacOS?...
- Opencv—利用findContours函数找圆环,并标出(简单层级)
- DAVIS Driving Dataset 2020 (DDD20) 【转载】
- 史上最“奇葩”相亲男惊呆网友:你那么普通,却那么自信
- 《神经科学:探索脑》学习笔记(第5章 突触传递)
- 有哪些可以快速回复信息的软件
- 【目标检测】目标检测的评价指标(七个)
热门文章
- 大数据算法_大数据算法下的我们,犹如“皇帝的新衣”
- 【UVA10652】Board Wrapping(凸包+坐标旋转+多边形面积)
- 【HDU4691】Front compression(求给定两个子串/后缀的最长公共前缀---后缀数组+st表+一点思维)
- 【算法笔记】数论基础:康托展开(全排列和序号之间的映射)
- mysql 主从复制延迟_什么情况会导致MySQL主从复制延迟?
- java es score_elasticsearch系列(七)java定义score(示例代码)
- 图像空域增强:卷积运算法
- Alamofire拦截请求AOP,URLProtocol
- 异步ajax动态实现级联,JQuery异步加载无限下拉框级联功能实现示例
- java最终类不能派生子类_最终类不能派生子类,最终方法不能被重写 (2.0分)_学小易找答案...