js字段转列

function fieldToColumn(str) {
	if (!!str && typeof(str) === "string") {
		return str.replace(/[a-z]+[A-Za-z0-9]+/g, function (match) {
			return match.replace(/[A-Z]|\d+/g, function (match) {
				return "_" + match.toLowerCase();
			})
		})
	}
	return str;
}
function getClassName(str) {
	return str.match(/class\s+[a-zA-z0-9]+/g)[0].match(/([a-zA-Z0-9]+)$/)[0];
}
function getFields(str) {
	return str.match(/(?:private\s+[a-zA-Z0-9]+\s+)([a-zA-Z0-9]+)(?=\s*;)/g).map(function (mc) {
		return mc.match(/([a-zA-Z0-9]+)$/)[0]
	});
}
function genMapping(className,fields){

    var xml='<class name="'+className+'" table="TSS_COURIER">\n'+
        '    <id name="id" type="java.lang.Long">\n'+
        '        <column name="ID" precision="22" not-null="true"/>\n'+
        '        <generator class="sequence">\n'+
        '            <param name="sequence">SEQ_TSS_COURIER</param>\n'+
        '        </generator>\n'+
        '    </id>\n';
    for(var i=0;i<fields.length;i++){
        xml+=
            '    <property name="'+fields[i]+'" type="java.lang.String">\n'+
            '        <column name="'+fieldToColumn(fields[i])+'"/>\n'+
            '    </property>\n';
    }

    xml+='</class>\n';
    return xml;
}

var str = 'package org.smart4j.sample.entity;\n'+
'import org.smart4j.framework.orm.annotation.Entity;\n'+
'public class Product {\n'+
'	private long id;\n'+
'	private long productTypeId;\n'+
'	private String name;\n'+
'	private String code;\n'+
'	private int price;\n'+
'	private String description;\n'+
'	private String picture;\n'+
'	public long getId() {\n'+
'		return id;\n'+
'	}\n'+
'	public void setId(long id) {\n'+
'		this.id = id;\n'+
'	}\n'+
'	public long getProductTypeId() {\n'+
'		return productTypeId;\n'+
'	}\n'+
'	public void setProductTypeId(long productTypeId) {\n'+
'		this.productTypeId = productTypeId;\n'+
'	}\n'+
'	public String getName() {\n'+
'		return name;\n'+
'	}\n'+
'	public void setName(String name) {\n'+
'		this.name = name;\n'+
'	}\n'+
'	public String getCode() {\n'+
'		return code;\n'+
'	}\n'+
'	public void setCode(String code) {\n'+
'		this.code = code;\n'+
'	}\n'+
'	public int getPrice() {\n'+
'		return price;\n'+
'	}\n'+
'	public void setPrice(int price) {\n'+
'		this.price = price;\n'+
'	}\n'+
'	public String getDescription() {\n'+
'		return description;\n'+
'	}\n'+
'	public void setDescription(String description) {\n'+
'		this.description = description;\n'+
'	}\n'+
'	public String getPicture() {\n'+
'		return picture;\n'+
'	}\n'+
'	public void setPicture(String picture) {\n'+
'		this.picture = picture;\n'+
'	}\n'+
'}\n';
console.log(getClassName(str));
console.log(getFields(str));
console.log(getFields(str).map(function(mc){return fieldToColumn(mc)}));
console.log(genMapping(getClassName(str),getFields(str)));

猜你喜欢

转载自snowelf.iteye.com/blog/2297578