`
andy_ghg
  • 浏览: 290597 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
社区版块
存档分类
最新评论

用Java反射写的生成ExtJS MVC model文件的类。

阅读更多
如果你也在写Ext JS的MVC,恰好又遇到了类似下面的这个类。。。。

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!
分享到:
评论

相关推荐

    EXTJS简单MVC实例

    只要将解压的文件直接放置到myeclipse的webroot下面,启动tomcat访问。简单的EXTJS mvc框架,设计 store,model,controller,view,window等等,同时展示了一些基本的点击显示、修改等等操作,需要的同学自行下载

    Extjs4 MVC小实例

    Extjs4 MVC小实例根据The MVC Application Architecture做的

    extjs动态生成model、store、panel

    extjs动态生成model、store、panel;sql拼接等多种技术难点

    Java+Extjs实现单文件上传

    Java+Extjs实现单文件上传

    MVC+Extjs架构WebMis自动生成

    升级了,大家不要下载这个了,下载我的资源里的的(MVC+Extjs架构WebMis自动生成) 只要你配置了数据库,配置了表,配置了功能菜单,每个菜单对应一个表,就能生产一个基本的系统, 基本系统:能对你的表进行CRUD,...

    Extjs4.0 mvc模式开发

    本工程采用ExtJs4.0 开发,采用mvc开发模式,分为controller view model store。

    ExtJS MVC 官方实例

    extjs的官方api中的例子

    ExtJS 4 MVC

    MVC with ExtJS 4 prictiacal Ext JS 上的关于MVC的例子

    ExtJs 4 MVC 新机制测试源码奉献

    ExtJs 4 用了一段时间了,今天研究了下ExtJs4的MVC机制,感觉还挺好,建议大家尝试,所以就写了一个demo,帮助那些对ExtJs还不是很懂,或者想用ExtJs4却又不知道怎么做好的朋友。。。多余话不说了大家如果有什么不...

    extjs4 mvc extjs

    是用extjs mvc写的,controller里面会配置model store view,然后mode和store的关系,相信大家也很清楚了,store里面会用到model,当然也可以不用,和原来的extjs3.x是一样的,用field来表示,其实是换汤不换药而已...

    ExtJS MVC示例

    配合extjs4.2.0的MVC开发模式教程使用更好

    extjs4.2MVC去除Model层和Store层

    去除extjs4.2MVC中的Model层和Store层,使用工厂模式来创建Model层和Store层简化代码。

    extJs4.2MVC示例

    严格按照MVC架构分的曾,可以运行的extJs4.2MVC示例,在myclipse加到一个项目里的的webroot文件夹下,运行index.html即可

    ExtJS的MVC模式

    ExtJS4.0.7的MVC模式。 欢迎大家下载。

    extjs4MVC实现

    ExtJS4.0MVC学习,适合初学者。

    extjs界面生成器extjs界面生成器extjs界面生成器

    extjs界面生成器extjs界面生成器extjs界面生成器extjs界面生成器extjs界面生成器

    java后台生成Extjs代码及注册事件

    通过java生成Extjs表格,并在java里写事件,js通过动态输出的事件,做出相应。 参考方法:前台(columns : me.renderColumns(columns),//绑定列头),后台(/query/componentColumnAction_queryColumns.action)。

    ExtJS6 MVC 精简示例

    最新版本,ExtJS6 MVC 精简示例!!!,一个可以参考的小例子!

    EXTJS4 MVC+ASP.NET MVC3动态加载JS文件实例

    本例采用ASP.NET MVC3 +EXTJS4 MVC 框架,完美实现了EXTJS4动态加载JS文件,对ASP.NET MVC3及EXTJS4 MVC 各应用要点进行了应用。对于想采用ASP.NET MVC3 +EXTJS4 MVC 框架的学习者有很好的帮助,快速掌握MVC框架,本...

Global site tag (gtag.js) - Google Analytics