T4模版生成SpringMVC构造REST代码:第八篇 用T4模版生成请求实体类代码

来源:互联网 发布:知乎英语四级作文 编辑:程序博客网 时间:2024/04/29 11:09

目前的SpringMVC,还不支持泛型输入参数,所以我们不得不再添加一层请求实体类”。通过这类model,Json解析器把传入的json字符串转换成相应的请求实体类,然后控制层的action(方法)使用它作为输入参数进行相应的功能处理。

第一步,在“解决方案JavaGenerate”中添加类库,用于存放请求实体类的模版及相应文件,我们命名这个类库为JavaRequertModels。注意框架选择。

第二步,增加t4空模版,在解决方案管理器中,选择JavaRequertModels项目,点击右键,选择“添加 ”--〉“新建项”,选择"Blank T4 Template",输入名称“JavaRequertModels.tt",然后点击"添加".

第三步,修改JavaRequertModels.tt模版,我直接贴代码

<#@ 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+ "Request.java");//输出的类文件名称,及开始输出文件#>package com.jiahe.rest.demo2.models;/********************************************************************************* * Copyright (c) Jiahe LIMITED  2012 All Rights Reserved * 系统名称: * 程序模块文件名称:<#=filePascialName+ "Request.java"#> * 摘要:*********************************************************************************/import java.io.Serializable;/********************************************************************************* *  * <pre> * [版本说明] * 1.0    2012/08/30   初版 * </pre> *  @version  1.0 2013/5/16 *  @author   lxh *********************************************************************************/public class <#=filePascialName#>Request implements Serializable{private static final long serialVersionUID = 1L;private Header header;//求情头private <#=filePascialName#> <#=fileCamelName#>;//请求对象public Header getHeader() {return header;}public void setHeader(Header header) {this.header = header;}public <#=filePascialName#> get<#=filePascialName#>() {return <#=fileCamelName#>;}public void set<#=filePascialName#>(<#=filePascialName#> <#=fileCamelName#>) {this.<#=fileCamelName#> = <#=fileCamelName#>;}@Overridepublic String toString() {return "<#=filePascialName#>Reauest [header=" + header + ", <#=fileCamelName#>="+ <#=fileCamelName#> + "]";}public <#=filePascialName#>Request() {super();}public <#=filePascialName#>Request(Header header, <#=filePascialName#> <#=fileCamelName#>) {super();this.header = header;this.<#=fileCamelName#> = <#=fileCamelName#>;}<#}fileManager.Process();#><#+//得到类的Pascial风格名称string getModelsPascialName(string source){string[] s=source.Split('_');for(int i=0;i<s.Length;i++){string s1=s[i].Substring(0,1).ToUpper();string s2=s[i].Substring(1);s[i]=string.Concat(s1,s2);    }string result=string.Empty;for(int i=1;i<s.Length;i++){result=string.Concat(result,s[i]);}return result;}#><#+//得到类的Camel风格名称string getModelsCamelName(string source){string[] s=source.Split('_');for(int i=0;i<s.Length;i++){string s1=s[i].Substring(0,1).ToUpper();string s2=s[i].Substring(1);s[i]=string.Concat(s1,s2);    }string result=string.Empty;for(int i=1;i<s.Length;i++){result=string.Concat(result,s[i]);}string s11=result.Substring(0,1).ToLower();string s12=result.Substring(1);return string.Concat(s11,s12);}#><#+//得到属性的Pascial风格名称string getPropertyPascialName(string source){string[] s=source.Split('_');for(int i=0;i<s.Length;i++){string s1=s[i].Substring(0,1).ToUpper();string s2=s[i].Substring(1);s[i]=string.Concat(s1,s2);    }return string.Concat(s);}//得到属性的Camel风格名称string getPropertyCamelName(string source){string[] s=source.Split('_');for(int i=0;i<s.Length;i++){string s1=s[i].Substring(0,1).ToUpper();string s2=s[i].Substring(1);s[i]=string.Concat(s1,s2);    }string result=string.Concat(s);string s11=result.Substring(0,1).ToLower();string s12=result.Substring(1);return string.Concat(s11,s12);}//数据类型转换string getPropertyType(string source){string result=string.Empty;if (source=="int") result="Integer";if (source=="integer") result="Integer";if (source=="Integer") result="Integer";if (source=="byte") result="Integer";if (source=="sbyte") result="Integer";if (source=="bool") result="Integer";if (source=="Int16") result="Integer";if (source=="short") result="Integer";if (source=="Int32") result="Integer";if (source=="Nullable<int>") result="Integer";if (source=="Nullable<integer>") result="Integer";if (source=="Nullable<Integer>") result="Integer";if (source=="Nullable<byte>") result="Integer";if (source=="Nullable<sbyte>") result="Integer";if (source=="Nullable<bool>") result="Integer";if (source=="Nullable<boolean>") result="Integer";if (source=="Nullable<Int16>") result="Integer";if (source=="Nullable<short>") result="Integer";if (source=="Nullable<Int32>") result="Integer";if (source=="Int64") result="Long";if (source=="long") result="Long";if (source=="Long") result="Long";if (source=="Nullable<Int64>") result="Long";if (source=="Nullable<long>") result="Long";if (source=="Nullable<Long>") result="Long";if (source=="float") result="Double";if (source=="Float") result="Double";if (source=="decimal") result="Double";if (source=="Decimal") result="Double";if (source=="Nullable<float>") result="Double";if (source=="Nullable<Float>") result="Double";if (source=="Nullable<decimal>") result="Double";if (source=="Nullable<Decimal>") result="Double";if (source=="byte[]") result="byte[]";if (source=="string") result="String";if (source=="String") result="String";if (source=="System.Date") result="String";if (source=="System.Time") result="String";if (source=="System.DateTime") result="String";if (source=="Nullable<System.Date>") result="String";if (source=="Nullable<System.Time>") result="String";if (source=="Nullable<System.DateTime>") result="String";return result;}#>






原创粉丝点击