让我们先直接来看可以使用结果
这是任意一个示例项目,我们利用swagger展示出了项目中的某些API,如何使用springboot及swagger以及JPA不在本项目过多叙述,不懂的朋友可以自行百度 or Google。
现在问题来了,需要添加一组新的接口,新的接口需要基本的CURD。传统的办法是ctrl+c v。
这他么完全是在侮辱程序员智商啊!所以利用模板技术,我们可以实现下面的效果。
好打开我们自动生成项目的界面。
界面自己写的,略丑,毕竟不是专业前端。
按照需要填写字段
我设置了一个person,其中字段有name和birthday,点击自动生成。OK提示生成成功。
在我们重新编译上面的示例项目,刷新swagger界面。
我曹,api直接已经出现在swagger界面上了,而且是真实可用的接口
当然数据库也是自动建好的(JPA的功能)
是不是特别方便,省去了很多复制粘贴的重复性工作。当然这适用于简单的实体的CURD。但是因为是生成的源代码,当然自己想加什么字段或者映射都是非常灵活的。
***********************************装逼分割线*******************************
先来说原理,核心原理是freemarker的模板技术,不懂得朋友可以搜下
我们直接上实体类的template
package ${packageName}; import ${project}.entity.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; <#if defaultIdConfig = true> import org.hibernate.annotations.GenericGenerator; </#if> <#if defaultMySqlConfig = true> import javax.persistence.*; </#if> import java.util.*; import java.io.Serializable; <#list attrs as attr> <#if attr.packageName??> import ${attr.packageName}; </#if> </#list> /** * Created by LiaoKe on ${date} * From Automatic */ @Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper=false) <#if defaultMySqlConfig = true> @Entity <#if tableName??> @Table(name=" _${tableName}") <#else> @Table(name=" _${className}") </#if> </#if> public class ${className} extends EntityCURD implements Serializable{ <#if defaultIdConfig = true> <#if defaultMySqlConfig = true> @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") </#if> private String id; <#if defaultMySqlConfig = true> @Column(updatable = false) // 默认不修改此数据 </#if> private Date createDate; </#if> <#list attrs as attr> <#if attr.annotationFlag = true> //TODO Miss Annotations This message come from Automatic </#if> private ${attr.fieldType} ${attr.fieldName}; //${attr.describe} </#list> }
具体的freemarker语法不多叙述,按照以上模板生成的实体如下
package com.note.entity.person; import com.note.entity.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.util.*; import java.io.Serializable; /** * Created by LiaoKe on Wed Jul 05 10:42:06 CST 2017 * From Automatic */ @Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(callSuper=false) @Entity @Table(name=" _person") public class Person extends EntityCURD implements Serializable{ @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") private String id; @Column(updatable = false) // 默认不修改此数据 private Date createDate; private String name; //姓名 private Date birthday; //生日 }
其中使用了lombok,无需再写set get,代码比较简洁,是个奇巧淫技.....
基本思路就是利用模板技术,实现CTRL CV
下面试githup地址
https://github.com/liaoke0123/automatic
具体实现不在过多叙述
相关推荐
使用Spring boot + FreeMarker 实现代码生成功能,完整案例可以查看 eladmin 项目,教程地址: https://www.ydyno.com/archives/1177.html
代码生成器支持model、Mapper、Dao、Service、ServiceImpl、Controller 一次性的生成,支持同时生成多张表,此代码生成器依赖JAR包比较少,除了必用Freemarker 和JDBC之外基本上完全个人编写
spring-boot-freemarker 整合源码
SpringBoot+JPA+Freemarker 生成动态SQL,通过Test下的 junit Test运行代码
spring boot mybatis freemarker整合项目的完整源码。最新版本IDEA,稳!
Spring Boot,Freemarker 编辑好格式的Word文档 1份 将Word文档里需要填充的地方加上占位符${xxxx} 将编辑好占位符的文档另存为XML格式Word 2003 XML文档,并重命名,用英文命名 利用文本编辑器打开该XML文件检查,...
给初学者一个简单的利用freemarker生成xml文件的例子
spring-boot-starter-freemarker-1.5.4.RELEASE.jar
利用FreeMarker生成word文件例子
使用freeMarker模板和Spring boot后端API接口实现查询用户列表的功能。 http://localhost:8080/ftl/index
java利用freemarker生成word.pdf
Spring boot + Mybatis + Freemarker
java利用freemarker生成[归纳].pdf
Spring Boot 系列教程 freemarker导出word下载
请使用maven导入打开项目,此Demo使用IntelliJ IDEA创建,请尽可能使用IntelliJ IDEA
1.3 spring boot起步之Hello World 1.4 Spring Boot返回json数据 1.5 Spring Boot热部署 1.6 Spring Boot使用别的json解析框架 1.7 全局异常捕捉 1.8 Spring Boot datasource - mysql 1.9 JPA - Hibernate 1.10 使用...
spring boot 2.x 完整版 整合了 spring boot+mybatis+redis +freemarker 实现用户的登录注册
spring-boot-starter-freemarker-2.0.0.RELEASE
freemarker转doc及docx说明: 1.本地配置有maven环境,修改FreeMarkerUtil的main中的本地文件路径参数,然后执行main方法即可导出docx文件
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java