FreeMarker 生成Java、mybatis文件

利用Mybatisplus-generator+freemarker编写一个独属于你的springboot代码生成程序 在 Spring Boot 框架中,我们经常需要进行数据库开发,编写 CRUD 代码是一个重复且繁琐的工作。为了提高开发效率和代码质量,我们可以利用 Mybatisplus-generator+freemarker 自定义代码生成程序。 通过配置 Mybatisplus-generator,我们可以轻松地生成实体类、Mapper、Service、Controller 等常用的代码文件。同时,借助 freemarker 模板引擎,我们可以自定义代码文件的生成规则和规范,让生成的代码更加符合实际业务需求。 阅读详情

                                             FreeMarker 生成Java、mybatis文件

       将mysql数据库表通过FreeMarker生成对应的Java文件和对应的mybatis文件。

       FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。


       FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。

package com.iteye.injavawetrust.freemarker;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * @author InJavaWeTrust
 */
public class TestFreeMarker {
	public static void main(String[] args) {
		// 1.创建目录
		Params params = UtilXML.params;
		UtilFile.initDirName(params);
		// 2.生成文件
		List<Tables> tables = UtilXML.tableList;
		for (Tables table : tables) {
			System.out.println(table.getTableName());
			String javaClassName = UtilString.capitalize(UtilString
					.dbNameToVarName(table.getTableName()));
			Map<Object, Object> map = UtilFreemarker.getTableInfo(table
					.getTableName());
			map.put("title", "InJavaWeTrust");
			map.put("author", params.getAuthor());
			map.put("createTime", UtilDate.getToday());
			map.put("project", params.getProject());
			map.put("className", javaClassName);
			map.put("voClassName", javaClassName);
			map.put("javapackage", params.getJavapackage());
			// 1.po
			String poName = params.getOsdir() + File.separatorChar + "po" + File.separatorChar + javaClassName + "PO.java";
			UtilFreemarker.generateFile(poName, "javapo.ftl", map);
			// 2.vo
			String voName = params.getOsdir() + File.separatorChar + "vo" + File.separatorChar + javaClassName + "VO.java";
			UtilFreemarker.generateFile(voName, "javavo.ftl", map);
			// 3.xml
			String xmlName = params.getOsdir() + File.separatorChar + "xml" + File.separatorChar + javaClassName + ".xml";
			UtilFreemarker.generateFile(xmlName, "xml.ftl", map);
		}
	}
}

package com.iteye.injavawetrust.freemarker;

/**
 * @author InJavaWeTrust
 */
public class Constants {
	public static final String DRIVER   = UtilXML.dataSource.getDriver();
	public static final String URL      = UtilXML.dataSource.getUrl();
	public static final String USER     = UtilXML.dataSource.getUsername();
	public static final String PASSWORD = UtilXML.dataSource.getPassword();
}

package com.iteye.injavawetrust.freemarker;

/**
 * @author InJavaWeTrust
 */
public class DataSource {
	public String driver;
	public String url;
	public String username;
	public String password;
	public String getDriver() {
		return driver;
	}
	public void setDriver(String driver) {
		this.driver = driver;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

package com.iteye.injavawetrust.freemarker;

/**
 * @author InJavaWeTrust
 */
public class Params {
	public String osdir;
	public String javapackage;
	public String author;
	public String project;
	public String getOsdir() {
		return osdir;
	}
	public void setOsdir(String osdir) {
		this.osdir = osdir;
	}
	public String getJavapackage() {
		return javapackage;
	}
	public void setJavapackage(String javapackage) {
		this.javapackage = javapackage;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getProject() {
		return project;
	}
	public void setProject(String project) {
		this.project = project;
	}
}

  

package com.iteye.injavawetrust.freemarker;

/**
 * @author InJavaWeTrust
 */
public class Tables {
	public String tableName;
	public String getTableName() {
		return tableName;
	}
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}
}

package com.iteye.injavawetrust.f
【Mybatis/Mybatis-plus】:代码生成器之模板引擎方式(freemarker) 前言 代码生成器模板 mybatis-plus + Freemarker模板引擎 导入相关依赖 <!-- 若要整合springboot,需要注意版本之间的问题 springboot版本对于mybatis-plus-boot-starter不兼容 ·--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter< 阅读详情

相关推荐

Mybatis-Plus使用freemarker模板快速生成代码

【代码】Mybatis-Plus使用freemarker模板快速生成代码。

m0_50137812的博客 914

Java Web 模板代码生成器的设计与实现

起因 项目中需要根据数据库表写很多Meta、Dao、Service代码,其中很多代码都是重复而繁琐的。因此如果有一个模板代码的生成器,就可以一定程度提高开发效率。 目标 可配置生成Java Web项目中Dao、Meta、Service层模板代码的生成器。 代码框架 mvn archetype:generate -DgroupId=com.zju -DartifactId=

yeyingss的专栏 8793

Eclipse右键一键生成MyBatis实体类、Mapper接口与XML映射文件

在Eclipse中写好generatorConfig.xml配置后,选中数据库表或已有Mapper文件,右键调用生成命令,立即产出Java实体类、Mapper接口、XML映射文件和DAO层代码。支持MySQL、Oracle、PostgreSQL等主流数据库,允许自定义模板、包路径、字段命名规则及JDBC类型到Java类型的映射关系。整个过程完全在IDE内完成,不依赖Maven命令行或外部构建工具,安装插件后无需重启Eclipse,即装即用。适配Eclipse 4.5及以上版本,插件体积轻、响应快,专为Jav

t8u9v0w1x的博客 200

使用DCA1000和EVM板进行数据采集

目录 1. 准备工作 1.1 硬件 1.2 软件 2. 驱动安装 3. 设置静态IP地址 4. 采集数据 5. 采集的数据文件的格式 6. 数据采集存储的数据流 参考资料 1. 准备工作 1.1 硬件 EVM板,电源线(5V,>2.5A),USB线 DCA1000,电源线(5V,>2A),USB线,网线,60pin Samtec cable 1.2 软件 mmWave Studio Matlab Runtime Engine v8.5.1 将DCA1000和EVM板

qq_42235129的博客 1万+

排列显示阿拉伯语、数字及英文时的处理方法

这段时间参与开发沙特阿拉伯的网站模板,模板使用的语言是阿拉伯语,其显示顺序为从右到左,而中文、数字及英文的显示顺序为从左到右 ,所以当遇到一行文字内既有阿拉伯语又有数字和英文时会出现语序混乱的问题,如 期待显示的文案为: 按顺序写入,对应的代码如以下,其中currency_pay为变量,值为356SAR <span>الدفع الفعلي:{{currency_pay}}</span> 显示为 الدفع الفعلي : 356SAR 金额356和货币符号SAR分开了,这样显

llq886的博客 5807

EAST算法(Efficient and Accuracy Scene Text))

1.EAST模型简介 本文介绍的文本检测模型EAST,便简化了中间的过程步骤,直接实现端到端文本检测,优雅简洁,检测的准确性和速度都有了进一步的提升。如下图: 其中,(a)、(b)、(c)、(d)是几种常见的文本检测过程,典型的检测过程包括候选框提取、候选框过滤、bouding box回归、候选框合并等阶段,中间过程比较冗长。而(e)即是本文介绍的EAST模型检测过程,从上图可看出,其过程简化为只有FCN阶段(全卷积网络)、NMS阶段(非极大抑制),中间过程大大缩减,而且输出结果支持文本行、单词的多个角度

博客 9579

车载通信技术原理-CAN通讯和代码配置:奥迪A6轿车总线拓扑图

CAN总线是一种用于汽车监测与控制系统的串行通信协议,由德国Bosch公司开发。它具有多主工作方式、优先级仲裁、高抗干扰等特点,支持点对点、广播等多种通信方式,传输距离可达10公里。CAN协议采用差分信号传输,物理层使用双绞线,数据链路层实现错误检测、位填充等功能。协议帧类型包括数据帧、遥控帧、错误帧等。CAN总线自1986年发布以来,已成为汽车电子系统的标准配置,广泛应用于车载网络。文章还提供了S32K144芯片的CAN驱动代码示例。

擎天柱工坊 1069

MGC3130 3D手势识别传感器原理图设计,已量产(交互传感器)

最近在落地一款互动艺术装置的控制模块,选了 Microchip 的 MGC3130 做核心 —— 这颗芯片算是 GestIC® 近场传感技术的 “熟面孔” 了,把 3D 手势识别、运动跟踪的信号处理都集成在一颗芯片里,0-10cm 的检测距离刚好适配桌面级互动场景,挥挥手就能控设备的体验,放在艺术装置里确实很出效果。今天扒一下实际跑通的原理图,聊聊每个模块的设计思路。

不脱发的程序猿 373

Unity与iOS原生交互实战指南

C#(DllImport) → C 接口(extern "C") → Objective‑C / SwiftObjective‑C → UnitySendMessage → C#(GameObject + public 方法)在写.mm文件;在里面写;C# 用声明;调用它,参数就是 string / 数值等;在.mm里做你想做的 iOS 原生操作。在 Unity 里准备一个常驻 GameObject,比如;上面挂一个脚本,写;在 iOS 插件中用;

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1359

npm报错 npm WARN deprecated....的问题解决方式

报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i.

任聪聪的博客 16万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 在mysql数据库中创建oracle scott用户的四个表及插入初始化数据
下一篇: naoting
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值