`

几个经常用到的通用Dorado基础类

SQL 
阅读更多
1.Dorado中虽然提供了ViewModel的接口, 但是这是一个非常"肥"的接口, 对于客户程序来说很多东东都是用不着的, 于是将经常用到的方法进行了一下封装, 创建了一个更小的接口以便能将viewmodel的功能传递到其他地方使用, 当然出于某些需要, 又加了几个经常需要的方法.
/**
 * 将ViewModel中的getDateset()等方法抽取出来,以便在utils类的静态方法中调用ViewModel的getDataset()等方法
 * 
 * @author Macro Chen
 * @since May 6, 2008
 */
public interface IViewModelProvider extends IProvider {
	public ViewDataset getDataset(String datasetId);

	public Control getControl(String controlId) throws Exception;

	public int getState();

	public boolean isViewState();

	public boolean isViewState(int state);

	public MetaData properties();
}



2.下面的两个类一般联合起来和DBStatement的query(), queryForList()方法一起使用, 用来将通过jbbc取得的VariantSet类型的记录集转换成JavaBean类型的记录集
/**
 * 
 * 封装创建DBStatement,给statement的参数赋值和关闭DBStatement操作 具体是查询还是更新操作由子类实现
 * 
 * @author Macro Chen
 * @Dec 20, 2006
 * 
 */
public abstract class SqlExecutor {

	/**
	 * 公共操作(获取Statement和关闭之)
	 * 
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	public Object execute(String sql) throws Exception {
		DBStatement stmt = DoradoUtils.getStatement(sql);
		try {
			ParameterSet p = stmt.parameters();
			return extract(stmt, p);
		} finally {
			stmt.close();
		}
	}

	/**
	 * 子类需要实现的CURD操作
	 * 
	 * @param stmt
	 * @param p
	 * @return
	 * @throws Exception
	 */
	public abstract Object extract(DBStatement stmt, ParameterSet p) throws Exception;
}


/**
 * 用来将VariantSet转换成JavaBean的接口
 * 
 * @author Macro Chen
 * @Dec 18, 2006
 *
 */
public interface RowConverter {
	public Object convert(VariantSet vs) throws SQLException;
}


3.DBStatement是Dorado中最常用的一个类, StatementDelegate这个封装类貌似用处不大, 本来主要是为了用方法的连写,后来发现经过格式化的连写代码比较难看.
/**
 * 对DBStatement做进一步的代理, 让设置参数的查询和更新更方便, 支持方法的连写
 * 
 * @author Macro Chen
 * @since Jun 19, 2008
 */
public class StatementDelegate extends DBStatement {
	public DBStatement getDBStatement() {
		return this;
	}

	public StatementDelegate addParameter(String name, Long value) {
		if (value == null) {
			this.parameters().setValue(name, value);
		} else {
			this.parameters().setLong(name, value);
		}
		return this;
	}

	public StatementDelegate addParameter(String name, Double value) {
		this.parameters().setDouble(name, value);
		return this;
	}

	public StatementDelegate addParameter(String name, String value) {
		this.parameters().setString(name, value);
		return this;
	}

	public StatementDelegate addParameter(String name, Integer value) {
		if (value == null) {
			this.parameters().setValue(name, value);
		} else {
			this.parameters().setInt(name, value);
		}
		return this;
	}

	public StatementDelegate setDateTime(String fieldName) {
		DoradoUtils.setDateTime(parameters(), fieldName);
		return this;
	}

	public StatementDelegate setPrimaryKey(long primaryKey) {
		addParameter("id", primaryKey);
		return this;
	}

	public StatementDelegate setPrimaryKey() {
		long primaryKey = IdentifierUtils.getPrimaryKey();

		addParameter("id", primaryKey);
		return this;
	}
}


4.这个是我比较常用到的一个类, 用了一个回调的模式, 用来处理在一个sql操作中调用其他的sql操作.后来发现它还有一个妙用, 就是封装一个不完全的查询, 丢到另一个查询中使用, 并注入剩下的查询条件
/**
 * 为了处理在调用setSql()的时候关闭正在使用的DBStatement, 将创建DBStatement延迟到使用的时候
 * 
 * @author Macro Chen
 * @since Jun 11, 2008
 */
public abstract class DBStatementCallback {

	public DBStatement getDBStatement() throws Exception {
		DBStatement stmt = DoradoUtils.getDBStatement(getSql());
		setParameters(stmt.parameters());
		return stmt;
	}

	protected abstract String getSql();

	protected abstract void setParameters(ParameterSet parameters);
}



/**
 * 针对只设置sql, 不设置parameter的情况
 * @author Macro Chen
 * @since Jun 11, 2008
 */
public abstract class SimpleDBStatementCallback extends DBStatementCallback {
	@Override
	protected void setParameters(ParameterSet parameters) {
	}

}
分享到:
评论
1 楼 jiahuiyou 2011-09-07  
  

相关推荐

    使用dorado基础技术进行Web应用开发

    使用dorado基础技术进行Web应用开发

    Dorado7/9开发环境 (解压即用Eclipse+dorado插件)支持dorado7和dorado9

    标题中的"Dorado7/9开发环境 (解压即用Eclipse+dorado插件)支持dorado7和dorado9"表明这是一个专为Dorado7和Dorado9开发设计的集成开发环境(IDE)。这个环境基于Eclipse,一个广泛使用的开源Java IDE,它已经被扩展...

    dorado基础 快速入门

    在快速入门项目 `QuickStart1Prj` 中,你可以找到一个简单的 dorado 应用示例,它可能包含了一个简单的页面布局,展示了一些基础组件的用法。通过分析和运行这个项目,你可以更好地理解 dorado 的基本操作和工作机制...

    dorado7-eclipse研发工具

    Dorado7 是一个基于Java的企业级Web应用开发框架,它提供了一整套组件化、服务化的解决方案,帮助开发者快速构建复杂的业务系统。 在这款研发工具中,`README.txt` 文件通常包含了安装指南、使用方法以及可能遇到的...

    dorado7离线中文文档.7z

    【标题】"dorado7离线中文文档.7z" 提供的是 Dorado7 开发的重要参考资料,它是一份详尽的 Dorado7.5 官方离线文档,适用于那些在开发过程中需要离线查阅 Dorado 框架相关知识的开发者。Dorado 是一个功能强大的富...

    dorado5学习资料

    同时,这个版本还附带了36个月的远程技术支持与软件升级许可,确保用户在使用过程中得到及时的技术援助,并能持续享受到软件的最新功能和性能优化。 三、技术手册关键内容 1. 安装与配置:技术手册会详细讲解...

    dorado-hibernate和dorado-core的jar包

    Dorado 是一个企业级的Java应用开发框架,它旨在简化企业级应用的开发流程,提高开发效率。Dorado 提供了一整套完善的服务,包括UI组件、数据访问、业务服务和事务管理等。在这个场景中,我们关注的是"Dorado-...

    Dorado7.x 基础培训详解

    基于java的dorado7技术开发,基础详解教程。本教程适合初次接触Dorado7 的人学习,通过本教程可以初步了解Dorado7 的设计诉求以及实现原理,并借此掌握Dorado7 中的基本概念和基本术语,例如立体数DataPath, ...

    dorado7-ide-0.7.2.zip

    而“dorado7-ide-0.7.2.zip”这个压缩包,正是为Dorado7用户提供的一款专门的集成开发环境(IDE),旨在提升开发效率,简化项目构建过程。 Dorado7 IDE是针对Dorado7框架精心设计的开发工具,它集成了代码编辑、...

    dorado下载Jar包

    这个jar包是开发Dorado应用的基础,它集成了大量的UI控件、数据绑定机制和事件处理模型,使得开发者能够快速地构建出响应式且交互性强的前端界面。 在Dorado4.jar的使用过程中,开发者可以利用其提供的各种预定义的...

    dorado开发框架 baseProject

    【 dorado 开发框架 baseProject 】 是一个基于 SSH 三层架构的基础开发模板,旨在为开发者提供一个预先配置好的开发环境,从而免去重复的配置工作,提高开发效率。Dorado 框架是一个功能强大的企业级应用开发平台,...

    dorado client-api

    Dorado客户端API是这个框架的重要组成部分,它允许开发者在客户端编写代码,通过网络调用远端Dorado服务,实现数据的查询、增删改操作。 1. **核心概念**: - **服务代理(Service Proxy)**:Dorado客户端API的...

    Dorado5自定义组件开发指南

    在制作自定义滚动条组件时,开发者需要创建一个新的Control类,继承自Dorado5提供的基础组件类,并重写或扩展必要的方法和属性。这可能涉及到CSS样式定义、JavaScript事件处理以及与Dataset的交互逻辑。 滚动条组件...

    dorado-7.5.0-jsdoc.zip

    【 dorado-7.5.0-jsdoc.zip 】是一个包含Dorado 7.5.0版本相关JavaScript文档的压缩包。这个压缩包主要用于提供Dorado框架7.5.0版本的开发者指南、API参考以及相关示例,帮助开发者更好地理解和使用这个组件库。 ...

    dorado7插件包 最新2012.01-30

    这些特性可以被添加到项目中,以增强Dorado7的基础框架。 在2012.01-30这个版本中,我们可以推测Dorado7对这些插件和特性进行了优化,可能修复了一些已知问题,增加了新功能,或者提升了性能。具体的变化需要查看...

    Dorado Client Api.chm

    Dorado Client Api.chm dorado 客户端 手册

    dorado快速入门(经典教程)

    《Dorado快速入门》经典教程是一份非常适合新手学习的指南,旨在帮助初学者逐步...通过这个经典的快速入门教程,新手不仅可以学会基本操作,还能建立起对Dorado开发流程的整体理解,为日后深入学习和实践打下坚实基础。

    dorado5 eclipse插件

    3. **智能提示与补全**:插件为Dorado5的API提供了智能感知功能,当开发者编写代码时,能自动给出相关的类、方法和属性提示,提高编码效率。 4. **调试支持**:在Eclipse环境中,开发者可以直接对Dorado5应用进行...

    dorado 7.2.0 server api

    在 dorado 7.2.0 中,这些API主要分为几个关键部分: 1. **数据访问API**:这是 dorado 的核心,包括对数据库的CRUD(创建、读取、更新、删除)操作。这些API使得开发者能以面向对象的方式处理数据,提高代码的...

Global site tag (gtag.js) - Google Analytics