T4模版生成SpringMVC构造REST代码:第九篇 用T4模版生成控制层代码
第一步,在“解决方案JavaGenerate”中添加类库,用于存放控制层的模版及相应文件,我们命名这个类库为JavaControllers。注意框架选择。
第二步,增加t4空模版,在解决方案管理器中,选择JavaRequertModels项目,点击右键,选择“添加
”--〉“新建项”,选择"Blank T4 Template",输入名称“JavaControllers.tt",然后点击"添加".
第三步,修改JavaControllers.tt模版,我直接贴代码
[csharp] <#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ assembly name="EnvDTE" #>
<#@ import namespace="EnvDTE"#>
<#@ output extension=".cs"#><#
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);
string inputFile = @"..\EDMX\dblxh.edmx";//EDMX项目中dblxh.edmx的路径
MetadataWorkspace metadataWorkspace = null;
bool allMetadataLoaded =loader.TryLoadAllMetadata(inputFile, out metadataWorkspace);
EdmItemCollection ItemCollection = (EdmItemCollection)metadataWorkspace.GetItemCollection(DataSpace.CSpace);
EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);
// 发出文件
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
string filePascialName=getModelsPascialName(entity.Name);//Pascial风格的类名称
string fileCamelName=getModelsCamelName(entity.Name);//Camel风格的类名称
fileManager.StartNewFile(filePascialName+ "Controller.java");//输出的类文件名称,及开始输出文件
#>
package com.jiahe.rest.demo2.controller;
/*********************************************************************************
* Copyright (c) XXXXX LIMITED 2012 All Rights Reserved
* 系统名称:
* 程序模块文件名称:<#=filePascialName+ "Controller.java"#>
* 摘要:
*********************************************************************************/
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jiahe.rest.demo2.models.<#=filePascialName#>;
import com.jiahe.rest.demo2.requestmodels.<#=filePascialName#>Request;
import com.jiahe.rest.demo2.responseModels.ResultData;
import com.jiahe.rest.demo2.service.<#=filePascialName#>Service;
/*********************************************************************************
*
* <pre>
* [版本说明]
* 1.0 2012/08/30 初版
* </pre>
* @version 1.0 2013/5/16
* @author lxh
*********************************************************************************/
@Controller
@RequestMapping("/<#=filePascialName.ToLower()#>")
public class <#=filePascialName#>Controller {
@Autowired
private <#=filePascialName#>Service <#=fileCamelName#>Service;
/**
* add 增加一个<#=filePascialName#>
* http://localhost:8080/demo2/<#=filePascialName.ToLower()#>/add
* @param requestData
* @param mode
* @param response
* @return
* @throws IOException
*/
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody
public ResultData<<#=filePascialName#>> add(@RequestBody <#=filePascialName#>Request requestData,
Model mode, HttpServletResponse response) throws IOException {
ResultData<<#=filePascialName#>> resultData =new ResultData<<#=filePascialName#>>();
resultData.setStatus(0);
resultData.setData(null);
if (requestData==null) {
resultData.setMessage("参数错误:没有传入参数");
} else {
//身份验证处理
try {
int i=<#=fileCamelName#>Service.insert(requestData.get<#=filePascialName#>());
if (i==1){
resultData.setStatus(1);
resultData.setMessage("添加成功");
} else {
resultData.setMessage("添加失败");
}
} catch (Exception e) {
resultData.setMessage("添加失败:"+e.getMessage());
}
}
return resultData;
}
&
补充:软件开发 , C# ,