All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.iih5.smartorm.generator.ModelBuilder Maven / Gradle / Ivy

Go to download

这是一个ORM模型组件,可快速实现SQL操作,目前支持mysql,NoSQL库目前支持Redis

There is a newer version: 3.1
Show newest version
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