让我们先直接来看可以使用结果
这是任意一个示例项目,我们利用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 整合源码
《Spring Boot、MyBatis与Freemarker的深度整合指南》 在当今的Java开发领域,Spring Boot以其简洁的配置和强大的功能集成为开发者所喜爱。而MyBatis作为轻量级的持久层框架,提供了灵活的SQL操作,极大地提高了...
结合SpringBoot和JPA,我们可以创建一个服务,该服务使用JPA的Repository接口与数据库进行交互,并通过Freemarker生成动态SQL。具体步骤如下: 1. **设置项目**:创建一个SpringBoot项目,添加Spring Data JPA和...
在Spring Boot中,Freemarker被用作视图层的技术,通过简单的模板语法,开发者可以将数据模型与页面展示分离,提高代码的可维护性。配置Freemarker通常涉及以下几个步骤: 1. 添加Freemarker依赖到`pom.xml`。 2. ...
boot-starter-redis-1.3.3.RELEASE"这两个组件是Spring Boot生态系统中的重要组成部分,它们极大地简化了开发者的工作,使得构建基于Freemarker的动态页面和利用Redis进行缓存操作变得简单易行。通过深入理解和熟练...
Spring Boot简化了Spring应用的初始搭建以及开发过程,MyBatis则是一个轻量级的持久层框架,用于处理数据库操作,而FreeMarker则是一个动态模板引擎,用于生成HTML或者其他格式的输出。下面将详细阐述这三个框架的...
在本项目中,我们将利用FreeMarker模板语言和Spring Boot后端API接口来实现一个用户列表的查询功能。下面,我将详细讲解这个过程中的关键知识点。 1. **FreeMarker模板**: FreeMarker是一个Java模板引擎,它能够...
Spring Boot,Freemarker 编辑好格式的Word文档 1份 将Word文档里需要填充的地方加上占位符${xxxx} 将编辑好占位符的文档另存为XML格式Word 2003 XML文档,并重命名,用英文命名 利用文本编辑器打开该XML文件检查,...
此外,Spring Boot还集成了Thymeleaf、FreeMarker等模板引擎,用于构建动态网页。 在Web开发方面,Spring Boot提供了Spring MVC框架,用于处理HTTP请求。资料中可能会有RESTful API设计、WebSocket、Swagger接口...
在本教程中,我们将深入探讨如何使用Spring Boot和FreeMarker模板引擎来生成Word文档并进行下载。Spring Boot作为Java开发的快速启动框架,简化了配置和集成,而FreeMarker则是一个强大的模板语言,用于动态生成HTML...
通过Spring Boot 2、Hibernate和FreeMarker的集成,你可以创建一个轻量级的、面向对象的Web应用,其中数据访问层使用Hibernate简化数据库操作,而视图层利用FreeMarker生成动态HTML。这个简单的实例为初学者提供了一...
《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...
基于Java Spring Boot的代码生成器平台 项目概述 本项目是一个基于Java Spring Boot框架的代码生成器平台,旨在为开发者提供一个高效、灵活的代码生成解决方案。通过该平台,用户可以在线搜索、使用、制作和分享...
本项目基于Spring Boot 2.0.1版本,整合了Mybatis、Redis以及Freemarker模板引擎,实现了用户登录注册功能,为我们提供了一个高效且易于维护的Web应用基础架构。 一、Spring Boot 2.0.1概述 Spring Boot是Spring...
spring-boot-starter-freemarker-1.5.4.RELEASE.jar
本书首先会讲解Spring Boot 2的基础概念,包括如何创建一个新的Spring Boot项目、理解起步依赖以及如何利用Spring Initializr快速初始化项目。接下来,你将学习到Spring Boot的核心组件,如自动配置机制,它能够根据...
以下是一个简单的示例,展示如何使用FreeMarker生成Word文档: ```java import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import ...
Java 利用 Freemarker 生成 Word.pdf 在本资源中,我们将学习如何使用 Java 和 Freemarker 生成 Word 文档,并将其导出为 PDF 文件。 Freemarker 是一个基于模板的生成文档的开源库,能够将数据和模板结合生成最终...