代码生成

在企业软件开发过程中,大多数时间都是面向数据库表的增删改查开发。通过通用的增删改查代码生成器,可以有效的提高效率,降低成本;把有规则的重复性劳动让机器完成,解放开发人员。

MyBatis Generator

  • MyBatis Generator 是 MyBatis 提供的一个代码生成工具

可以帮我们生成表对应的持久化对象(po)、操作数据库的接口(dao)、CRUD sql 的 xml(mapper)。

<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${last.version}</version>
<configuration>
<!--mybatis的代码生成器的配置策略文件-->
<configurationFile>mybatis-generator-config.xml</configurationFile>
</configuration>
</plugin>
  • 配置代码生成相关的策略文件 mybatis-generator-config.xml
<generatorConfiguration>
<context>
<!-- jdbc连接 -->
<jdbcConnection> ... </jdbcConnection>
<!-- schema为数据库名,tableName为对应的数据库表名 -->
<table> ... </table>
<!-- 注释 -->
<commentGenerator> ... </commentGenerator>
<!-- 类型转换 -->
<javaTypeResolver> ... </javaTypeResolver>
<!-- 生成实体类配置 -->
<javaModelGenerator> ... </javaModelGenerator>
<!-- 生成Mapper.xml文件配置 -->
<sqlMapGenerator> ... </sqlMapGenerator>
<!-- 生成Mapper.java 接口-->
<javaClientGenerator> ... </javaClientGenerator>
</context>
</generatorConfiguration>
  • 缺点
  1. 每次代码生成需要配置对应的 mybatis-generator-config 通过 XML 的形式配置相关生成属性和规则
  2. 无法生成通用的 Controller、Service 类,无法自定义模板等

综上两点: mybatis-generator 使用非常不方便

EasyCode

EasyCode 是基于 IntelliJ IDEA Ultimate 版开发的一个代码生成插件,主要通过自定义模板(基于 velocity)来生成各种你想要的代码。通常用于生成 Entity、Dao、Service、Controller。如果你动手能力强还可以用于生成 HTML、JS、PHP 等代码。理论上来说只要是与数据有关的代码都是可以生成的。

快速上手

  1. 安装 IDEA EasyCode 插件。 支持在线安装,插件市场搜索安装即可。

  2. 使用 IDEA 连接目标数据源

  1. 选择目标表进行代码生成

进阶配置

如上即可完成基于单表的增删改查方法,包括 Controller、Service、Mapper、Entity。 但默认生成是基于原生 MyBatis 的通用文件,不适用于 MyBatisPlus、通用 Mapper 等 Mybatis 扩展插件。我们可以通过编辑 EasyCode 的模板文件,来动态添加我们的生成规则,并且可以导出给其他人使用。

  • 甚至于可以配置新的模板生成前端页面,比如基于 Element 的增删改查

总结

  • 当然很多脚手架都会内置代码生成功能。 例如 pig 的开发平台模块 ,通过自定义模板引擎形式实现代码生成,能够更好的整合现有业务提开发效率。

项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注

还在使用MyBatis Generator?试试这个工具的更多相关文章

  1. MyBatis Generator 超详细配置

    想快速开始,请直接拉到最后,看整体配置. MyBatis Generator 是 MyBatis 提供的一个代码生成工具.可以帮我们生成 表对应的持久化对象(po).操作数据库的接口(dao).CRU ...

  2. mybatis generator 使用教程(生成带注释的实体类)

    引言: 最近的一个项目,由于数据库表巨多,导致需要创建N多个java实体.dao.mapper.xml映射文件,如果均使用纯手工编写,无疑需要耗费大量时间和精力.于是上网学习了mybatis gene ...

  3. springboot集成mybatis及mybatis generator工具使用

    原文链接 前言mybatis是一个半自动化的orm框架,所谓半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernat ...

  4. springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用

    前言 mybatis是一个半自动化的orm框架,所谓半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完 ...

  5. Mybatis Generator生成工具配置文件详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  6. Mybatis generator生成工具简单介绍

    Mybatis generator  其主要的功能就是方便,快捷的创建好Dao,entry,xml 加快了开发速度,使用方面根据其提供的规则配置好就OK 这里还有一个重要的开发场景,开发过程中,对数据 ...

  7. mybatis generator工具集成(一)

    第一步,pom中加入 <build> <plugins> <plugin> <groupId>org.springframework.boot</ ...

  8. (二)一个很好用的自动生成工具——mybatis generator

    mybatis generator-自动生成代码 准备材料: 一个文件夹,一个数据库的驱动包,mybatis-generator-core-1.3.5.jar,一条生成语句 如图:(我用的是derby ...

  9. 数据库逆向框架代码生成工具:MyBatis Generator的使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

随机推荐

  1. flatbuffer与protobuf对比

    在内存空间占用这个指标上,FlatBuffers占用的内存空间比protobuf多了两倍.序列化时二者的cpu计算时间FB比PB快了3000ms左右,反序列化时二者的cpu计算时间FB比PB快了900 ...

  2. 不能回滚的Redis事务还能用吗

    前言 事务是关系型数据库的特征之一,那么作为 Nosql 的代表 Redis 中有事务吗?如果有,那么 Redis 当中的事务又是否具备关系型数据库的 ACID 四大特性呢? Redis 有事务吗 这 ...

  3. 知道这两个 DOM 属性区别的,头发应该不多了吧?

    你可能知道,获取和设置 DOM 元素内部文本可以用这两个属性:Node.textContent 和 Element.innerText. 乍一看,它们似乎做着完全相同的事情,但它们之间有一些微妙但重要 ...

  4. Docker的镜像操作

    Docker镜像操作 一.查看镜像 docker images # 查看本地镜像 二.搜索镜像 docker search 镜像名字 docker search centos 三.下载(拉取)镜像 自 ...

  5. VMware 安装 CentOS7 后的简单配置

    1.连网 如果能连网,跳过此步 试着ping一下百度 ping baidu.com 动态分配 IP sudo vim /etc/sysconfig/network-scripts/ifcfg-ens3 ...

  6. 写了一个vue+antdv的后台管理模板

    1,项目简介 写在前面===>这是一个vue+antdv的后台管理模板 项目地址: https://github.com/BaiFangZi/vue-antd-manage 1.1,概述 ​ 最 ...

  7. DLL劫持学习及复现

    0x01 dll简介 在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式.这就是DLL(Dynamic Link Library),即动态链接 ...

  8. C++图论算法——图的储存方式

    使用二维数组邻接矩阵储存图 无向图: 图G 定义图G[101][101],G[i][j]的值表示从结点vi到vj是否有边或弧,若有,取值为1或权值,若无,则取值为0或∞.以下是图G用邻接矩阵表示的列表 ...

  9. 如何下载Image Properties Context Menu(图片)插件

    如何下载Image Properties Context Menu(图片)插件 可以通过:http://www.cnplugins.com/zhuanti/four-image-processing. ...

  10. HashMap源码阅读(小白的java进阶)

    OverView 构造方法 //构造方法 public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < ...