⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entitysqlcreator.java

📁 《j2ee开发全程实录》随书源码
💻 JAVA
字号:
package com.cownew.PIS.base.sqlClient.bizLayer;

import java.util.List;

import com.cownew.PIS.framework.common.metaDataMgr.DataTypeEnum;
import com.cownew.PIS.framework.common.metaDataMgr.EntityFieldModelInfo;
import com.cownew.PIS.framework.common.metaDataMgr.EntityModelInfo;
import com.cownew.PIS.framework.common.metaDataMgr.LinkTypeEnum;
import com.cownew.PIS.framework.common.metaDataMgr.MetaDataConstant;
import com.cownew.ctk.common.StringUtils;

/**
 * 建库脚本生成器
 */
public class EntitySQLCreator
{
	/**
	 * 生成实体的建库脚本
	 * @param eInfo
	 * @return
	 */
	public static String generateCreateSQL(EntityModelInfo eInfo)
	{
		StringBuffer sql = new StringBuffer();
		String pk = eInfo.getPrimaryKey();
		String pkDBField = null;
		sql.append("Create Table ").append(eInfo.getTableName()).append("(");
		List fieldList = eInfo.getFields();
		for (int i = 0, n = fieldList.size(); i < n; i++)
		{
			EntityFieldModelInfo fInfo = (EntityFieldModelInfo) fieldList
					.get(i);

			//one to many字段不生成数据库字段
			if (fInfo.isLinkProperty()
					&& fInfo.getLinkType() == LinkTypeEnum.ONETOMANY)
			{
				continue;
			}
			sql.append(getFieldDef(fInfo)).append(",");

			if (pk.equals(fInfo.getDbFieldName()))
			{
				pkDBField = fInfo.getDbFieldName();
			}
		}

		if (StringUtils.isEmpty(pkDBField))
		{
			pkDBField = MetaDataConstant.PKFIELDNAME;
		}
		sql.append("primary key(").append(pkDBField).append("))");
		return sql.toString();
	}

	private static String getFieldDef(EntityFieldModelInfo fInfo)
	{
		DataTypeEnum dataType = fInfo.getDataType();
		String fName = fInfo.getDbFieldName();
		int len = fInfo.getLength();
		StringBuffer sb = new StringBuffer();

		if (dataType == DataTypeEnum.BIGDECIMAL)
		{
			sb.append(fName);
			sb.append(" Numeric(28,10)");
		} else if (dataType == DataTypeEnum.BLOB)
		{
			sb.append(fName);
			sb.append(" Blob(").append(len).append(")");
		} else if (dataType == DataTypeEnum.BOOLEAN)
		{
			sb.append(fName);
			sb.append(" boolean");
		} else if (dataType == DataTypeEnum.CLOB)
		{
			sb.append(fName);
			sb.append(" Clob(").append(len).append(")");
		} else if (dataType == DataTypeEnum.DATE)
		{
			sb.append(fName);
			sb.append(" Date");
		} else if (dataType == DataTypeEnum.INTEGER)
		{
			sb.append(fName);
			sb.append(" Int");
		} else if (dataType == DataTypeEnum.STRING)
		{
			sb.append(fName);
			sb.append(" Varchar(").append(len).append(")");
		} else
		{
			throw new IllegalArgumentException(dataType.getName());
		}

		if (fInfo.isAllowNull())
		{
			sb.append(" null");
		} else
		{
			sb.append(" not null");
		}

		return sb.toString();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -