如果你也在写Ext JS的MVC,恰好又遇到了类似下面的这个类。。。。
你是不是感觉你快要崩溃了呢?
那么这里提供一个自动生成Model的java类
这样就没有必要整天写那个破model了,用到的时候直接生成就OK!
package cn.com.fri.plugins.setup.po;
public class DataBaseInfo {
private String databaseProductName;
private boolean supportsTransactions;
private String databaseProductVersion;
private int defaultTransactionIsolation;
private boolean supportsBatchUpdates;
private String url;
private String username;
private boolean readOnly;
private boolean supportsColumnAliasing;
private boolean supportsLikeEscapeClause;
private boolean supportsLimitedOuterJoins;
private boolean supportsMultipleTransactions;
private boolean supportsSubqueriesInExists;
private boolean supportsSubqueriesInIns;
private boolean supportsTransactionIsolationLevel;
private boolean supportsUnion;
private boolean supportsUnionAll;
private boolean usesLocalFilePerTable;
private boolean usesLocalFiles;
private int databaseMajorVersion;
private int databaseMinorVersion;
private int JDBCMajorVersion;
private int JDBCMinorVersion;
private String driverName;
private String driverVersion;
private String extraNameCharacters;
private String identifierQuoteString;
private int maxCatalogNameLength;
private int maxColumnNameLength;
private int maxColumnsInGroupBy;
private int maxColumnsInOrderBy;
public int getMaxColumnsInOrderBy() {
return maxColumnsInOrderBy;
}
public void setMaxColumnsInOrderBy(int maxColumnsInOrderBy) {
this.maxColumnsInOrderBy = maxColumnsInOrderBy;
}
private int maxColumnsInSelect;
private int maxConnections;
public String getDatabaseProductName() {
return databaseProductName;
}
public void setDatabaseProductName(String databaseProductName) {
this.databaseProductName = databaseProductName;
}
public boolean isSupportsTransactions() {
return supportsTransactions;
}
public void setSupportsTransactions(boolean supportsTransactions) {
this.supportsTransactions = supportsTransactions;
}
public String getDatabaseProductVersion() {
return databaseProductVersion;
}
public void setDatabaseProductVersion(String databaseProductVersion) {
this.databaseProductVersion = databaseProductVersion;
}
public int getDefaultTransactionIsolation() {
return defaultTransactionIsolation;
}
public void setDefaultTransactionIsolation(int defaultTransactionIsolation) {
this.defaultTransactionIsolation = defaultTransactionIsolation;
}
public boolean isSupportsBatchUpdates() {
return supportsBatchUpdates;
}
public void setSupportsBatchUpdates(boolean supportsBatchUpdates) {
this.supportsBatchUpdates = supportsBatchUpdates;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public boolean isReadOnly() {
return readOnly;
}
public void setReadOnly(boolean readOnly) {
this.readOnly = readOnly;
}
public boolean isSupportsColumnAliasing() {
return supportsColumnAliasing;
}
public void setSupportsColumnAliasing(boolean supportsColumnAliasing) {
this.supportsColumnAliasing = supportsColumnAliasing;
}
public boolean isSupportsLikeEscapeClause() {
return supportsLikeEscapeClause;
}
public void setSupportsLikeEscapeClause(boolean supportsLikeEscapeClause) {
this.supportsLikeEscapeClause = supportsLikeEscapeClause;
}
public boolean isSupportsLimitedOuterJoins() {
return supportsLimitedOuterJoins;
}
public void setSupportsLimitedOuterJoins(boolean supportsLimitedOuterJoins) {
this.supportsLimitedOuterJoins = supportsLimitedOuterJoins;
}
public boolean isSupportsMultipleTransactions() {
return supportsMultipleTransactions;
}
public void setSupportsMultipleTransactions(boolean supportsMultipleTransactions) {
this.supportsMultipleTransactions = supportsMultipleTransactions;
}
public boolean isSupportsSubqueriesInExists() {
return supportsSubqueriesInExists;
}
public void setSupportsSubqueriesInExists(boolean supportsSubqueriesInExists) {
this.supportsSubqueriesInExists = supportsSubqueriesInExists;
}
public boolean isSupportsSubqueriesInIns() {
return supportsSubqueriesInIns;
}
public void setSupportsSubqueriesInIns(boolean supportsSubqueriesInIns) {
this.supportsSubqueriesInIns = supportsSubqueriesInIns;
}
public boolean isSupportsTransactionIsolationLevel() {
return supportsTransactionIsolationLevel;
}
public void setSupportsTransactionIsolationLevel(
boolean supportsTransactionIsolationLevel) {
this.supportsTransactionIsolationLevel = supportsTransactionIsolationLevel;
}
public boolean isSupportsUnion() {
return supportsUnion;
}
public void setSupportsUnion(boolean supportsUnion) {
this.supportsUnion = supportsUnion;
}
public boolean isSupportsUnionAll() {
return supportsUnionAll;
}
public void setSupportsUnionAll(boolean supportsUnionAll) {
this.supportsUnionAll = supportsUnionAll;
}
public boolean isUsesLocalFilePerTable() {
return usesLocalFilePerTable;
}
public void setUsesLocalFilePerTable(boolean usesLocalFilePerTable) {
this.usesLocalFilePerTable = usesLocalFilePerTable;
}
public boolean isUsesLocalFiles() {
return usesLocalFiles;
}
public void setUsesLocalFiles(boolean usesLocalFiles) {
this.usesLocalFiles = usesLocalFiles;
}
public int getDatabaseMajorVersion() {
return databaseMajorVersion;
}
public void setDatabaseMajorVersion(int databaseMajorVersion) {
this.databaseMajorVersion = databaseMajorVersion;
}
public int getDatabaseMinorVersion() {
return databaseMinorVersion;
}
public void setDatabaseMinorVersion(int databaseMinorVersion) {
this.databaseMinorVersion = databaseMinorVersion;
}
public int getJDBCMajorVersion() {
return JDBCMajorVersion;
}
public void setJDBCMajorVersion(int jDBCMajorVersion) {
JDBCMajorVersion = jDBCMajorVersion;
}
public int getJDBCMinorVersion() {
return JDBCMinorVersion;
}
public void setJDBCMinorVersion(int jDBCMinorVersion) {
JDBCMinorVersion = jDBCMinorVersion;
}
public String getDriverName() {
return driverName;
}
public void setDriverName(String driverName) {
this.driverName = driverName;
}
public String getDriverVersion() {
return driverVersion;
}
public void setDriverVersion(String driverVersion) {
this.driverVersion = driverVersion;
}
public String getExtraNameCharacters() {
return extraNameCharacters;
}
public void setExtraNameCharacters(String extraNameCharacters) {
this.extraNameCharacters = extraNameCharacters;
}
public String getIdentifierQuoteString() {
return identifierQuoteString;
}
public void setIdentifierQuoteString(String identifierQuoteString) {
this.identifierQuoteString = identifierQuoteString;
}
public int getMaxCatalogNameLength() {
return maxCatalogNameLength;
}
public void setMaxCatalogNameLength(int maxCatalogNameLength) {
this.maxCatalogNameLength = maxCatalogNameLength;
}
public int getMaxColumnNameLength() {
return maxColumnNameLength;
}
public void setMaxColumnNameLength(int maxColumnNameLength) {
this.maxColumnNameLength = maxColumnNameLength;
}
public int getMaxColumnsInGroupBy() {
return maxColumnsInGroupBy;
}
public void setMaxColumnsInGroupBy(int maxColumnsInGroupBy) {
this.maxColumnsInGroupBy = maxColumnsInGroupBy;
}
public int getMaxColumnsInSelect() {
return maxColumnsInSelect;
}
public void setMaxColumnsInSelect(int maxColumnsInSelect) {
this.maxColumnsInSelect = maxColumnsInSelect;
}
public int getMaxConnections() {
return maxConnections;
}
public void setMaxConnections(int maxConnections) {
this.maxConnections = maxConnections;
}
public int getMaxCursorNameLength() {
return maxCursorNameLength;
}
public void setMaxCursorNameLength(int maxCursorNameLength) {
this.maxCursorNameLength = maxCursorNameLength;
}
public int getMaxStatements() {
return maxStatements;
}
public void setMaxStatements(int maxStatements) {
this.maxStatements = maxStatements;
}
private int maxCursorNameLength;
private int maxStatements;
}
你是不是感觉你快要崩溃了呢?
那么这里提供一个自动生成Model的java类
package cn.com.fri.core.utils.extjs;
import java.io.IOException;
import java.lang.reflect.Field;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import cn.com.fri.plugins.setup.po.DataBaseInfo;
/**
* 根据给出的类映射出前端的ExtJS Model.
*
* @author <a href="mailto:ge.bugman@gmail.com">葛昊</a>
* @since Spring 3.1 Hibernate 4.0 and jdk 1.7
* @version %I% %G%
*/
public class ReflectObject2ExtJSModel {
public static String createModel(Class<?> clazz) throws IOException {
String[] filters = null;
// 判断该类中是否包含懒加载对象,如果包含懒加载对象,则排除在外。
if (clazz.isAnnotationPresent(JsonIgnoreProperties.class)) {
filters = clazz.getAnnotation(JsonIgnoreProperties.class).value();
}
Field[] fields = clazz.getDeclaredFields();
// 这里将里面的包名改成你所需的,或者改用传参的方式也是一个不错的方法!
String sb = "Ext.define('SystemSetup.model." + clazz.getSimpleName()
+ "', {\r\n\textend: 'Ext.data.Model',\r\n\tfields:[";
fieldFor: for (Field field : fields) {
if (filters != null) {
for (String f : filters) {
if (f.equals(field.getName())) {
continue fieldFor;
}
}
}
sb += "'" + field.getName() + "',";
}
sb = sb.substring(0, sb.length() - 1);
sb += "]\r\n});";
// 在这里可以输出为文件,也可以返回一个字符串.
return sb.toString();
}
public static void main(String[] args) {
try {
String model = ReflectObject2ExtJSModel
.createModel(DataBaseInfo.class);
System.out.println(model);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这样就没有必要整天写那个破model了,用到的时候直接生成就OK!