auto-code

Java 代码自动生成器
授权协议 LGPL
开发语言 Java
所属分类 程序开发、 代码生成工具
软件类型 开源软件
地区 国产
投 递 者 蔚元明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

auto-code

欢迎使用auto-code代码自动生成引擎.2.1.0 再次升级.现在生成代码不再需要书写yaml文件.直接可以通过页面生成 单表一对一一对多 ,多对多代码 源码地址 代码生成演示地址

项目介绍

项目的优势在哪里

1.目前市面上的代码生成工具绝大多数仅仅支持生成单表,该项目支持 单表一对一一对多 ,多对多 代码生成.大大简化了开发的工作量

2.只要目前你的项目采用 springMVC+spring+mybatis架构的项目都适用(传统工程和springBoot工程都适用). 不管一次开发还是二次开发.该项目仅仅只是帮你生成单表以及多表的增删改查,不做任何底层的改动.

什么情况选择该项目

1.该项目只生成接口(controller,service,serviceImpl,dao,xml), 不生成页面.所以如果项目是采用前后台分离,不需要写页面.该项目会适合你

2.如果还想生成页面请看该项目,这个项目基于本项目.扩展了页面生成.适合后台使用 源码地址 演示地址 账号 ztp 密码 111111

为何会发起该项目?

绝大多数时候我们都是在做增删改查.每次创建一张表.然后我们需要重新写一次增删改查, 写虽然简单,不过极度耗时(controller,server,serverImpl,dao,xml) 所以才有了该项目,该项目能帮助你减少70%的工作量,让你专注于业务的实现.

集成教程

非常简单.只需要短短的几部就能完成集成

1.传统java-web集成请看这里 项目地址

2.spring-boot集成请看这里 项目地址

使用教程

准备工作

1.集成非常简单请查看上面的项目.选择自己需要的方式.里面有实例工程可供参考

2.成功后访问 http://localhost:8070/auto-code-ui/ui/index.html

界面如下: 

单表生成

假设我们要生成一张单表

CREATE TABLE `test_simple_code` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) DEFAULT NULL COMMENT '名称',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  `status` int(2) DEFAULT NULL COMMENT '{"name":"状态","1":"启用","0":"禁用"}',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `remarks` text COMMENT '备注',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='单表代码生成';

1.在数据库建表

  1.   
  2. 界面选择单表生成.选择对应的表,点击生成预览. 最后点击确认生成. 完毕.

生成的文件如下: 

3.生成完毕

一对一代码生成 one-to-one (代码采用追加的方式.无需担心代码被覆盖)

一个用户对应一个班级

CREATE TABLE `test_one_to_one_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` VARCHAR(50) DEFAULT NULL COMMENT '名称',
  `age` INT(3) DEFAULT NULL COMMENT '年龄',
  `status` INT(2) DEFAULT NULL COMMENT '{"name":"状态","1":"启用","0":"禁用"}',
  `birthday` DATE DEFAULT NULL COMMENT '生日',
  `remarks` TEXT COMMENT '备注',
  `mun` DECIMAL(20,2) DEFAULT NULL COMMENT '数字',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COMMENT='一对一用户';

CREATE TABLE `test_one_to_one_class` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '班级id',
  `user_id` INT(11) DEFAULT NULL COMMENT '用户id',
  `class_name` VARCHAR(50) DEFAULT NULL COMMENT '班级名称',
  `quantity` INT(11) DEFAULT NULL COMMENT '班级人数',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='一对一班级';

打开界面.选择对应的表,一对一比单表多了一个外键id. 比如上面两张表的关系就是通过 user_id来关联的 如下:

test_one_to_one_user.id=test_one_to_one_class.user_id

一对多 代码生成 one-to-Many (代码采用追加的方式.无需担心代码被覆盖)

一对多一对一一样不再描述

多对多 代码生成 many-to-many (代码采用追加的方式.无需担心代码被覆盖)

多个用户 对应 多个角色

CREATE TABLE `test_many_to_many_role` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '角色',
  `name` VARCHAR(100) NOT NULL COMMENT '角色名称',
  `status` INT(2) DEFAULT '0' COMMENT '{"name":"状态","0":"启用","1":"禁用"}',
  `create_user_id` INT(11) DEFAULT NULL COMMENT '创建者',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_user_id` INT(11) DEFAULT NULL COMMENT '更新者',
  `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `dels` INT(2) DEFAULT '0' COMMENT '{"name":"是否删除","0":"正常","1":"删除"}',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='多对多角色';

CREATE TABLE `test_many_to_many_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` VARCHAR(50) DEFAULT NULL COMMENT '名称',
  `age` INT(3) DEFAULT NULL COMMENT '年龄',
  `status` INT(2) DEFAULT NULL COMMENT '{"name":"状态","1":"启用","0":"禁用"}',
  `birthday` DATE DEFAULT NULL COMMENT '生日',
  `remarks` TEXT COMMENT '备注',
  `mun` DECIMAL(20,2) DEFAULT NULL COMMENT '数字',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COMMENT='多对多用户';

CREATE TABLE `test_many_to_many_user_role` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '测试用户角色',
  `user_id` INT(11) DEFAULT NULL COMMENT '用户id',
  `role_id` INT(11) DEFAULT NULL COMMENT '角色id',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=140 DEFAULT CHARSET=utf8 COMMENT='多对多用户角色';

1.打开界面.选择对应的表,多对多一对一多了一个关系描述表 比如上面三张表的关系是通过 test_many_to_many_user_role来表述的.如下:

test_many_to_many_user_role.user_id=test_many_to_many_user.id and test_many_to_many_user_role.role_id=test_many_to_many_role.id

生成代码注意事项

1.创建表结构时如果写上表与字段的注释将大大增加程序的可读性.我会将注释写到bean上面.
2.如果注释为json键值对字符串我将会在实体类生成一个字典方法
如:  {"1":"启用","0":"禁用"} 将会在实体类里面生成:
    public String getStatus_(){
    if(MyStringUtils.isEmpty(status)){
       return "";
    }else if(status.equals("1")){
      return "启用";
    }else if(status.equals("0")){
      return "禁用";
    }
    return "";

  }

配置参数介绍

如果是spring boot请以auto-code.xx 开头.如:

auto-code.cover=false
或者
 auto-code:
    cover: false

如果是java web请使用yaml格式书写 如:

globalConfig: 
    parentPack                                                                                                                       
参数名 默认值 介绍
parentPack 生成代码的父包 如父包是com.zengtengpeng.test controller将在com.zengtengpeng.test.controller下 bean 将在com.zengtengpeng.test.bean下 ,service,dao同理
parentPath 生成代码的项目根路径
cover false 是否覆盖生成 默认不覆盖
swagger true 是否生成swagger注解 (spring boot下如果为false将无法查看swagger页面)
javaSource src/main/java java在项目中的源路径
resources src/main/resources resource位置
xmlPath mybatisMapper mybatis xml存放的路径
packageBean bean 生成bean尾缀
packageDao dao 生成dao尾缀
packageController controller 生成controller尾缀
packageService service 生成service尾缀
packageBean bean 生成bean尾缀
autoCode true 是否启用代码生成器(生成环境建议关闭)
watchMobel false 观察者模式.只能看.不能生成代码(演示环境用的)
  • systemctl status kubelet ● kubelet.service - kubelet: The Kubernetes Node Agent    Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)   Drop-In: /etc/systemd/system

  • git(Auto-merging错误)解决冲突 1.git pull  更新代码,发现 error: Your local changes to the following files would be overwritten by merge:pom.xml Please commit your changes or stash them before you merge. 这说明你的pom.x

  • 遇到了两次OPATCHAUTO-68061 报错 按照正常的打补丁流程: 1. 分别在node1、node2上,升级GI OPatch 2. 分别在node1、node2上,升级Oracle OPatch 3. 分别在node1、node2上,给GI 打补丁 4. 分别在node1、node2上,给Oracle打补丁 结果就在成功在node1上给Oracle打补丁之后,去node2打的时候报错了。

  • RabbitMQ 启动报错 Failed to check/redeclare auto-delete queue(s). access to vhost ‘/’ refused for user ‘rabbit’ 今天项目在新的服务器上启动,所有的配置文件没变,安装完rabbitmq配置好以后,启动服务 服务器配置都是一样的,网络也没问题 结果发现报错了 Failed to check/rede

 相关资料
  • 问题内容: 我正在寻找一种基于类中定义的字段为现有Java源代码文件中的新方法自动生成源代码的方法。 本质上,我希望执行以下步骤: 读取并解析 遍历源代码中定义的所有字段 添加源代码方法 保存(理想情况下,保留现有代码的格式) 哪些工具和技术最适合完成此任务? 编辑 我不想在运行时生成代码;我想扩充现有的Java 源代码 问题答案: 用自动生成的代码修改相同的Java源文件是维护的噩梦。考虑生成一

  • 我正试图用我的MERN stack web应用程序自动化构建过程。 目前,我使用CodePipeline,它: 从GitHub获取我的代码作为源代码 使用CodeBuild(Ubuntu 2.0)运行构建 并将其部署到我的Elastic BeanStalk环境中 步骤1 在尝试使用CodeBuild之后,即使客户端似乎完全按照日志进行构建,前端似乎也不会更新。 以下是我CodeBuild项目的一些

  • 本文向大家介绍如何使用mybatis-generator自动生成代码,包括了如何使用mybatis-generator自动生成代码的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何使用mybatis-generator自动生成代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、在pom文件中添加mybatis-generator

  • 我使用eclipse生成Object的hashCode和equals方法的覆盖,并生成了一些关于hashCode覆盖的问题。下面的hashCode()是否正确? 问题: -为什么eclipse会生成两行代码?我认为将两个结果相加是合适的。知道为什么它们是分开的任务吗? -最终的int素数可以是任何素数吗? -整数结果是否应始终为 1?

  • 问题内容: 当Java编译器将原语自动包装到包装类时,它在幕后生成什么代码?我想象它调用: 包装器上的valueOf()方法 包装器的构造函数 还有其他魔术吗? 问题答案: 您可以使用该工具亲自查看。编译以下代码: 编译和反汇编: 输出为: 因此,如您所见,自动装箱将调用static方法,而自动拆箱将在给定对象上调用。没什么,真的- 只是语法糖。

  • 我正在根据参考指南学习使用Map结构。日食验证是 面向Web开发人员的Eclipse Java EE IDE。版本:开普勒服务版本2 pom。xml如下所示,与参考指南相同 它表示在构建项目时将生成实现代码。但是,它似乎不会在目标/生成的源文件夹下生成

  • Jboot 内置了一个简易的代码生成器,可以用来生成model层和Service层的基础代码,在生成代码之前,请先配置jboot.properties关于数据库相关的配置信息,Jboot 代码生成器会通过该配置去链接数据库。 jboot.datasource.type=mysql jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo

  • 遵照此规范,在实际操作中,有许多重复。接下来推荐一款专为本规范量身定做的代码生成器 Laravel 5.x Scaffold Generator。 本扩展支持 5.1 ~ 5.5 版本的 Laravel。 只需要一个命令: 即可生成: $ php artisan make:scaffold Projects --schema="name:string:index,description:text: