看到这个标题,如果你以为真的可以完全自动生成,那你就太Naive啦

我这里想介绍的是,利用模板生成我们需要的代码

一、模板

首先来说说模板,常见的java模板有:FreeMarker、Velocity、Jamon、JByte等等。

不熟悉的可以百度下,其实我了解也不多,哈哈。

二、原理

其实就是利用模板,填充数据,得到我们需要的代码。即:输出=模板+数据

三、实例

实例利用FreeMarker来做的,所以你需要先导入freemarker的jar包

假设我们需要自动生成一个java bean,那么我们的模板(formBean.ftl)可能是下面这个样子的

public class ${beanName?cap_first}Form {

<#list params as param>
private ${param.paramType} ${param.paramName};
public void set${param.paramName?cap_first}(${param.paramType} ${param.paramName}){
this.${param.paramName} = ${param.paramName};
} public ${param.paramType} get${param.paramName?cap_first}(){
return this.${param.paramName};
} </#list>
}

其中cap_first的作用是使首字母大写,这些都是ftl中的方法,可以百度谷歌之

接下来上拼装数据,生成文件的Demo

// 拼装数据
Map<String, Object> formBeanMap = new HashMap<String, Object>();
formBeanMap.put("beanName", "testBean");
List<Map<String, String>> paramsList = new ArrayList<Map<String, String>>();
for (int i = 0; i < 4; i++) {
Map<String, String> tmpParamMap = new HashMap<String, String>();
tmpParamMap.put("paramType", "String");
tmpParamMap.put("paramName", "param" + i);
paramsList.add(tmpParamMap);
}
formBeanMap.put("params", paramsList); freemarker.template.Configuration config = new freemarker.template.Configuration();
config.setObjectWrapper(new DefaultObjectWrapper());
Template formBeanTemplate = config.getTemplate("formBean.ftl", "UTF-8"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\TestBeanForm.java"), "UTF-8"));
formBeanTemplate.process(formBeanMap, out);
out.flush();
out.close();

执行formBeanTemplate.process之后,就可以根据模板、数据生成代码了。

java自动生成代码的更多相关文章

  1. java如何在eclipse编译时自动生成代码

    用eclipse写java代码,自动编译时,如何能够触发一个动作,这个动作是生成本项目的代码,并且编译完成后,自动生成的代码也编译好了, java编辑器中就可以做到对新生成的代码的自动提示? 不生成代 ...

  2. Java自动生成asmx的webservice代码

    第一种方式:针对CXF自动生成的代码对响应类大小写区别问题,可以使用此方法. 工具为Eclipse. 新建Web Service Client. 输入地址点击finish即可自动生成. 调用方式: p ...

  3. mybatis generator maven插件自动生成代码

    如果你正为无聊Dao代码的编写感到苦恼,如果你正为怕一个单词拼错导致Dao操作失败而感到苦恼,那么就可以考虑一些Mybatis generator这个差价,它会帮我们自动生成代码,类似于Hiberna ...

  4. MyBatis自动生成代码示例

    在项目中使用到mybatis时,都会选择自动生成实体类,Mapper,SqlMap这三个东东. 手头上在用的又不方便,找了下网上,其实有很多文章,但有些引用外部文件时不成功,也不方便,所以重新整理了下 ...

  5. MyBatis使用Generator自动生成代码

    MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...

  6. Mybatis上路_06-使用Java自动生成[转]

    Mybatis上路_06-使用Java自动生成 11人收藏此文章, 我要收藏发表于1个月前(2013-04-24 23:05) , 已有151次阅读 ,共0个评论 目录:[ - ] 1.编写Gener ...

  7. mybatis 自动生成代码(mybatis generator)

    pom.xml 文件配置 引入 mybatis generator <properties> <mysql.connector.version>5.1.44</mysql ...

  8. 【MyBatis】MyBatis自动生成代码查询之爬坑记

    前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...

  9. mybatis-generator : 自动生成代码

    [参考文章]:mybatis generator自动生成代码时 只生成了insert 而没有其他 [参考文章]:Mybatis Generator最完整配置详解 1. pom <plugin&g ...

随机推荐

  1. 拿 .properties 这种里面的数据 在不同的地方

    1 在xml中 2 在.java中 @Value("#{configProperties['key']}")    configProperties不是固定(根据配置时的id)  ...

  2. python -m SimpleHTTPServer 8080

    启动一个简单的 web 服务器 python -m SimpleHTTPServer 8080

  3. mysql之视图,存储过程,触发器,事务

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时 ...

  4. Oracle死锁查询及批量处理

    一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错. 二.死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做 ...

  5. 线程中的同步辅助类Exchanger

    Exchanger 允许两个线程在 collection 点交换对象,它在多流水线设计中是有用的. 允许两条线程之间交换数据.Exchanger的exchange方法是阻塞的,当其他线程也调用了该方法 ...

  6. Spring Cloud Hystrix

    接上篇: Spring Cloud Eureka 使用命令开启两个服务提供者 java -jar .\hello--SNAPSHOT.jar --server.port= java -jar .\he ...

  7. Android get current Locale, not default

    he default Locale is constructed statically at runtime for your application process from the system ...

  8. 测试驱动开发 - Test-Driven Development

    TDD 开发模式流程: 编写测试用例 -> 运行测试用例 –> 编写项目代码 -> 运行测试用例 -> 重构代码 优点: 1.TDD 开发中加入了回归测试,这样就确保了之前的功 ...

  9. Android_EditText 打勾显示输入的密码 --EditText与setTransformationMethod

    实现目标: 实现原理: 为CheckBox添加一个监听器事件; 实现的源码: package edu.cquptzx.showPassword; import android.app.Activity ...

  10. 理解 async/await 的执行

    这是一篇简单的短文章,方便理解. 开局先丢官宣:sec-async-function-definitions 这个链接是对 await 的解释,解释了它的执行. await 的执行意味着(官宣巴拉巴拉 ...