`
Algernoon
  • 浏览: 23825 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

代码生成器

 
阅读更多

代码生成器

package com.liuzm.mypss.test;

import java.io.File;
import java.io.FileWriter;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.junit.Test;

public class TemplateTest {
	// 开关:默认情况下已经存在的文件不需要生成代码
	// true:覆盖所有代码
	private static final boolean flag = false;
	// 1.那些domain需要生成代码
	private String[] domains = { "Product", "ProductType", "PurchaseBill",
			"PurchaseBillItem", "Supplier","SystemDictionaryDetail","SystemDictionaryType" };
	// 2.定义固定的目录路径:都是使用相对路径,规范:路径前面都不加/,路径的后面都加/
	private static final String JAVA = "src/main/java/";
	private static final String RESOURCES = "src/main/resources/";
	private static final String TEST = "test/main/java/";
	private static final String PACKAGE = "com/liuzm/mypss/";
	private static final String JS = "src/main/webapp/js/";
	private static final String VIEWS = "src/main/webapp/WEB-INF/views/";
	// 3.有那些模板需要生成
	private String[] templates = { "Action.java", "hbm.xml", "input.jsp",
			"list.js", "list.jsp", "Manager.xml", "Query.java", "Service.java",
			"ServiceImpl.java", "ServiceTest.java" };
	// 4.模板文件对应的生成文件路径
	private String[] files = { JAVA + PACKAGE + "web/",
			RESOURCES + PACKAGE + "domain/", VIEWS, JS, VIEWS,
			RESOURCES + "manager/", JAVA + PACKAGE + "query/",
			JAVA + PACKAGE + "service/", JAVA + PACKAGE + "service/impl/",
			TEST + PACKAGE + "test/" };

	@Test
	public void creatTemplate() throws Exception {
		if (templates.length != files.length) {
			throw new RuntimeException("模板数目和文件路径数目不匹配!");
		}

		VelocityContext context = new VelocityContext();
		// 5.外循环:domains
		for (int i = 0; i < domains.length; i++) {
			context.put("entity", domains[i]);
			// 6.处理domain首字母小写
			String lowerEntity = domains[i].substring(0, 1).toLowerCase()
					+ domains[i].substring(1);
			context.put("lowerEntity", lowerEntity);
			// 7.内循环:templates和files
			for (int j = 0; j < templates.length; j++) {
				Template template = Velocity.getTemplate("template/"
						+ templates[j], "UTF-8");
				// 8.实例化文件存放的路径
				File file = new File(files[j] + domains[i] + templates[j]);
				// 9.处理特殊的文件名称l
				if ("hbm.xml".equals(templates[j])) {
					file = new File(files[j] + domains[i] + "." + templates[j]);
				} else if ("input.jsp".equals(templates[j])) {
					file = new File(files[j] + lowerEntity + "/" + lowerEntity
							+ "-input.jsp");
				} else if ("list.js".equals(templates[j])) {
					file = new File(files[j] + lowerEntity + ".js");
				} else if ("list.jsp".equals(templates[j])) {
					file = new File(files[j] + lowerEntity + "/" + lowerEntity
							+ ".jsp");
				} else if ("Service.java".equals(templates[j])) {
					file = new File(files[j] + "I" + domains[i] + templates[j]);
				}
				System.out.println(file.getAbsolutePath());

				// 开关:默认情况下已经存在的文件不需要生成代码
				// true:覆盖所有代码
				// 表示代码已经存在 并且flag=false,不生成代码
				// 12.开关:默认情况下已经存在的文件不需要生成代码 true:覆盖所有代码
				if (file.exists() && !flag) {
					continue;
				}
				// 10.判断父目录是否存在
				File parentFile = file.getParentFile();
				if (!parentFile.exists()) {
					parentFile.mkdirs();
				}
				// 11.必须关闭流,写入内容
				FileWriter writer = new FileWriter(file);
				template.merge(context, writer);
				writer.close();

			}
			System.out.println("自动生成代码完毕,刷新工程,修改映射文件,运行测试!");
		}
	}

}

 

 

分享到:
评论

相关推荐

    C#代码生成器

    《C#代码生成器详解与应用》 C#代码生成器是一种高效开发工具,它能够帮助程序员快速生成符合特定需求的C#源代码,极大地提高了编程效率和代码质量。在.NET框架下,C#作为主要的开发语言,其代码生成器的作用显得尤...

    .net C#代码生成器

    《.NET C#代码生成器:提升开发效率的利器》 在软件开发过程中,编写重复性的基础代码是一项耗时的任务,而.NET C#代码生成器就是为了解决这一问题而诞生的工具。它能帮助开发者自动生成一些常见的、标准化的代码,...

    人人代码生成器贼好用啊

    人人代码生成器是一款高效实用的工具,主要用于自动化代码编写过程,极大地提高了开发人员的生产力。在软件开发领域,代码生成器扮演着至关重要的角色,它能够根据预设的模板或模型自动生成符合特定规范的源代码,...

    asp.net 代码生成器 .NET代码生成器 C#代码生成器 三层源代码生成器

    asp.net 代码生成器 【基本说明】 1、能够生成三层模式操作的所有后台代码,简单的SQL Server 2005数据库操作。 2、生成的代码包括了 MODEL、BLL、DAL、DBHelper、Config 生成的代码内有详细注释可提供参考。 ...

    代码生成器 代码生成器 代码生成器

    代码生成器是一种强大的工具,它能够自动生成符合特定规范或模式的源代码,极大地提高了开发效率,降低了程序员的重复劳动。在IT行业中,代码生成器的应用广泛,尤其在大型项目或者需要大量标准化代码的场景下,如...

    C#三层代码生成器

    "C#三层代码生成器"是一个工具,旨在帮助开发者快速生成C#项目的三层架构代码,减少手动编写代码的工作量,提高开发效率。三层架构是一种常见的软件设计模式,它将应用程序分为三个主要层次:表现层(UI)、业务逻辑...

    代码生成器(Asp.net(c#))源码

    《Asp.net(C#)代码生成器源码详解》 在软件开发过程中,代码生成器是一种提高效率的重要工具,尤其在Asp.net(C#)框架下,它能够自动生成大量基础代码,帮助开发者快速构建应用的骨架。本文将深入探讨Asp.net(C#)...

    mybatis 代码生成器

    MyBatis 代码生成器是一款高效实用的工具,旨在帮助开发者自动创建常见的CRUD操作代码,从而节省在数据库交互上花费的时间,提高开发效率。它支持多种数据库,包括Oracle和MySQL,这意味着无论你使用哪种数据库,都...

    SSH代码生成器

    SSH代码生成器是一种工具,主要用于自动化生成基于SSH(Spring、Struts2和Hibernate)框架的Web应用程序的基础代码。SSH框架是Java开发中的一个经典组合,它极大地提高了开发效率,简化了项目的构建过程。SSH框架的...

    CSharp C#代码生成器

    【CSharp C#代码生成器】是一个强大的工具,专为C#开发者设计,旨在提高开发效率,尤其是在处理大量数据操作和界面构建时。这个代码生成器可以自动生成用于Web应用程序和Windows Forms(Winform)应用的C#代码,极大...

    UC广播代码生成器 51vv广播代码生成器

    标题中的“UC广播代码生成器 51vv广播代码生成器”指的是两个不同的工具,用于创建特定的广播代码。在IT行业中,"广播代码"通常指的是应用或系统间进行通信时使用的信号或指令,特别是在Android操作系统中。UC广播...

    .net 3层代码生成器

    《.NET 三层代码生成器详解与应用》 在软件开发过程中,代码生成器是一种能够自动化生成特定结构或模式代码的工具,极大地提高了开发效率,降低了出错的可能性。本文将详细探讨一个基于.NET的三层代码生成器,它能...

    MybatisPlus代码生成器

    MybatisPlus代码生成器是一款强大的工具,专为简化基于MybatisPlus的Java开发流程而设计。它能够自动化地创建常见的项目结构文件,如实体类(entry)、数据访问对象(DAO)、服务接口及其实现(Service & Impl)、...

    基于C#的WebFirst代码生成器设计源码

    该代码生成器包含了CORE代码生成器、实体生成器、UI代码生成器、在线建表、导出文档、模版配置等功能,支持MySql、Oracle、Sqlite、SqlServer、pgsql、达梦、金仓等多种数据库生成器。适合用于学习和实践C#、...

    SQL代码生成器_sql代码生成_sqlserver_

    SQL代码生成器是一种工具,它自动化了创建SQL脚本的过程,极大地提高了开发人员的效率。在SQL Server环境下,这样的工具尤为重要,因为SQL Server数据库的复杂性和规模常常需要编写大量复杂的查询和数据操作语句。本...

    STM8函数库代码生成器

    STM8函数库代码生成器是一款专门针对STM8微控制器设计的工具,用于自动化生成与STM8芯片相关的函数库代码。STM8是意法半导体(STMicroelectronics)推出的一系列8位微控制器,广泛应用于各种嵌入式系统设计,如家用...

    动软代码生成器工具2023

    动软代码生成器是一款完全自主知识产权研发的为软件项目开发设计的自动代码生成器,也是一个软件项目智能开发平台,它可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入...

    代码生成器代码生成器.zip

    代码生成器是一种软件工具,它能够自动生成编程代码,帮助开发者快速构建应用程序或系统,减少重复的手动编码工作。在IT行业中,代码生成器扮演着提高效率、减少错误和标准化编码的重要角色。以下是对这个主题的详细...

    c51代码生成器

    《51单片机C51代码生成器详解》 51单片机以其结构简单、性价比高、易于上手等特点,在嵌入式系统开发领域占据了一席之地。在51单片机的编程过程中,C51语言是常用的一种高级编程语言,它将C语言的简洁性和单片机...

Global site tag (gtag.js) - Google Analytics