
com.iih5.smartorm.generator.ModelBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of smart-orm Show documentation
Show all versions of smart-orm Show documentation
这是一个ORM模型组件,可快速实现SQL操作,目前支持mysql,NoSQL库目前支持Redis
package com.iih5.smartorm.generator;/*
* Copyright 2016 xueyi ([email protected])
*
* The SmartORM Project licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
import com.alibaba.fastjson.JSON;
import com.iih5.smartorm.kit.StringKit;
public class ModelBuilder {
private StringBuffer builder=null;
private StringBuffer packageBuilder;
private StringBuffer importBuilder;
private StringBuffer classBuilder;
private StringBuffer constructBuilder;
private StringBuffer columnBuilder;
private StringBuffer setMethodBuilder;
private StringBuffer getMethodBuilder;
public ModelBuilder(){
builder = new StringBuffer();
packageBuilder = new StringBuffer();
classBuilder = new StringBuffer();
importBuilder = new StringBuffer();
constructBuilder = new StringBuffer();
columnBuilder = new StringBuffer();
setMethodBuilder=new StringBuffer();
getMethodBuilder=new StringBuffer();
}
private void join(){
builder.append(packageBuilder);
builder.append("\n\n");
builder.append(importBuilder);
builder.append("\n");
builder.append(classBuilder);
builder.append("\n");
builder.append( constructBuilder);
builder.append("\n");
builder.append(columnBuilder);
builder.append("\n");
builder.append(setMethodBuilder);
builder.append("\n");
builder.append(getMethodBuilder);
builder.append("\n");
builder.append("}\n");
}
private ModelBuilder createPackage(String pack){
packageBuilder.append("package "+pack+";");
return (this);
}
private ModelBuilder createImport(String imp){
importBuilder.append("import "+imp+";\n");
return (this);
}
private ModelBuilder createClass(String clas){
classBuilder.append("public class "+clas+" extends Model<"+clas+">{");
return (this);
}
private ModelBuilder createConstruct(String clas,String tableName){
constructBuilder.append(" public "+clas+"(){");
constructBuilder.append("\n this.table=\""+tableName+"\";");
constructBuilder.append("\n }");
constructBuilder.append("\n public "+clas+"(Object cdtBean){");
constructBuilder.append("\n super(cdtBean);\n");
constructBuilder.append(" this.table=\""+tableName+"\";");
constructBuilder.append("\n }");
return (this);
}
private ModelBuilder createColumn(String type, String column, String comment){
columnBuilder.append(" //"+comment+"\n");
columnBuilder.append(" private "+type+" "+StringKit.firstCharToLowerCase(StringKit.toCamelCaseName(column))+";\n");
return (this);
}
private ModelBuilder createSetMethod(Object type, String column){
setMethodBuilder.append(" public void set");
setMethodBuilder.append(StringKit.firstCharToUpperCase(StringKit.toCamelCaseName(column))+"("+type+" "+StringKit.toCamelCaseName(column)+") { \n");
setMethodBuilder.append(" this."+StringKit.toCamelCaseName(column)+" = "+StringKit.toCamelCaseName(column)+"; \n");
setMethodBuilder.append(" }\n\n");
return (this);
}
private ModelBuilder createGetMethod(Object type, String column){
setMethodBuilder.append(" public "+type+" "+"get");
setMethodBuilder.append(StringKit.firstCharToUpperCase(StringKit.toCamelCaseName(column))+"() { \n");
setMethodBuilder.append(" return "+StringKit.toCamelCaseName(column)+";\n");
setMethodBuilder.append(" }\n\n");
return (this);
}
public String doBuild(TableMeta tableMeta,String packageName){
createPackage(packageName);
createImport("com.iih5.smartorm.model.Model");
String className = StringKit.firstCharToUpperCase(StringKit.toModelNameByTable(tableMeta.name)+"Model") ;
createClass(className);
createConstruct(className,tableMeta.name);
JavaType javaTypeM = new JavaType();
for (ColumnMeta columnMeta:tableMeta.columnMetas) {
System.out.println(tableMeta.name+" }}}}}}}}}}}}} "+columnMeta.name+"}}}}}}}}}}}}}}}}="+ columnMeta.dataType);//-----------------------------------------------------
String javaType= javaTypeM.getType(columnMeta.dataType);
if (javaType==null){
throw new NullPointerException("找不到 "+columnMeta.dataType+"对应的JavaType");
}
if (JavaKeyword.contains(columnMeta.name)){
throw new IllegalArgumentException("非法参数名:"+columnMeta.name);
}
createColumn(javaType,columnMeta.name,columnMeta.comment);
createSetMethod(javaType,columnMeta.name);
createGetMethod(javaType,columnMeta.name);
}
join();
return builder.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy