`
ccx20060810501
  • 浏览: 32511 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

数据库访问层的实现(一)——模板方法模式

阅读更多

整个数据库访问层的实现模式是:domain类(User)+Dao接口(UserDao)+Dao接口实现(UserDaoImpl)

 

 

数据库的操作就是“更、删、改、查”,有称CRUD:

1.“更、删、改”可以统一为对数据库的update操作,所以可以定义一个模板方法:

protected int update(String sql, Object[] args) {

		Connection conn = null;
		PreparedStatement ps = null;
		try {
			// 建立连接
			conn = JdbcUtils.getConnection();
			// 创建语句
			ps = conn.prepareStatement(sql);
			// 设置参数
			setParameters(args, ps);
			// 执行语句
			int returnint = ps.executeUpdate();
			return returnint;
		} catch (SQLException e) {
			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtils.getInstance().free(null, ps, conn);
		}
	}

 

2.”查询“麻烦一点,因为不同的表的查询,ResultSet中的数据不一样,必须做不同的处理,定义下面这个模板方法,可以比较好的处理这个问题:

protected Object find(String sql, Object[] args, RowMapper rowMapper) {

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Object obj = null;
		try {
			// 建立连接
			conn = JdbcUtils.getConnection();
			// 创建语句
			ps = conn.prepareStatement(sql);
			// 设置参数
			setParameters(args, ps);
			// 执行语句
			rs = ps.executeQuery();
			// 处理结果
			while (rs.next()) {
				obj = rowMapper.mapRow(rs);
			}
		} catch (SQLException e) {

			throw new DaoException(e.getMessage(), e);
		} finally {
			JdbcUtils.getInstance().free(rs, ps, conn);
		}

		return obj;
	}

具体代码见:dao.impl.AbstactDaoImpl2

 

说明:定义了一个RowMapper的接口,把ResultSet的处理交给它的调用者,这种思想很好。

 

public interface RowMapper {
	public Object mapRow(ResultSet rs) throws SQLException;
}

具体代码见:dao.impl.RowMapper

 

3.具体的Dao接口实现见dao.impl.UserDaoImpl2类。

 

 

 

 

 

 

 

 

 

  • JDBC.rar (75.2 KB)
  • 描述: 如果不能运行,参看“DBCP的使用注意事项”
  • 下载次数: 5
分享到:
评论

相关推荐

    asp.net知识库

    DbHelperV2 - Teddy的通用数据库访问组件设计和思考 也论该不该在项目中使用存储过程代替SQL语句 如何使数据库中的表更有弹性,更易于扩展 存储过程——天使还是魔鬼 如何获取MSSQLServer,Oracel,Access中的数据字典...

    分层JavaWeb模板

    基于maven的WebApp,主要包括:DAO包(数据访问层),Service层(业务逻辑层),Domain(实体类)。完成了对数据库的连接,以及对数据库的增删改查。另外包括在(UI)网页上对数据库中book表格的展示

    ASP.NET3.5典型模块开发源代码

    28.2 数据层的数据库访问 375 28.2.1 数据访问接口IDAL 375 28.2.2 数据访问的实现类 377 28.2.3 数据访问工厂类DALFactory的实现 379 28.3 数据层中的个性配置 381 28.3.1 个性配置接口IProfileDAL 381...

    Visual C++实践与提高-COM和COM+篇『PDF』

    10.3.2 在ActiveX控件中访问DOM——例程DOMSamp 10.3.3 测试DOMCtrl控件 10.4 活动服务器组件 10.4.1 活动服务器页面(ASP) 10.4.2 ASP内建对象 10.4.2.1 Application对象 10.4.2.2 Session对象 10.4.2.3 Request...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    模板方法模式 访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 协议设计 二进制协议 文本协议 接入层架构设计 DNS...

    PHPWeb开发技术指南——pdf格式

    第6章 PHP数据库访问 151 6.1 PHPLib:PHP基础库 151 6.1.1 PHPLib的历史 151 6.1.2 优点和缺点 152 6.1.3 重要文件 152 6.1.4 PHPLib客户化 152 6.2 数据库基本概念 153 6.2.1 可移植性 153 6.2.2 调试模式 154 ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...

    低清版 大型门户网站是这样炼成的.pdf

    11.4.1 展示层jsp 2+struts 2标签库实现 711 11.4.2 控制层struts 2实现 720 11.4.3 持久层hibernate 3实现 728 11.4.4 spring 2接管业务逻辑层 730 11.5 小结 733 第12章 站务必备—系统用户管理与流量统计 ...

    《iOS6开发指南》精彩书摘

    本书是智捷iOS课堂团队编写iOS系列丛书中的一本,目的是使一个有Objective-C基础的程序员通过本书的学习,能够从零基础到在App Store发布一款应用。全书分为4篇:  第一部分基础篇,介绍了iOS一些基础的知识。 第1...

    PLSQL Developer 7.1.5

     模板列表——PL/SQL Developer的模板列表可用作一个实时的帮助组件,协助您强制实现标准化。只要点击相应的模板,您就可以向编辑器中插入标准的SQL或PL/SQL代码,或者从草稿出发来创建一个新程序。  查询构建器...

    【05-面向对象(下)】

    基本数据类型的包装类 •八大数据类型的包装类分别为:Byte、Short、Integer、Long、Character、 Float、Double、Boolean。...函数式接口中被实现方法的第一个参数作为调用者,后面的参数全部传给该...

    PLSQLDeveloper下载

     结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得...

    精通JS脚本之ExtJS框架.part2.rar

    最后利用一个商品信息管理系统和一个企业任务管理系统,向读者演示了ExtJS在实际项目中的应用以及实现流程。  《精通JS脚本之ExtJS框架》附有配套光盘,提供了书中实例的源代码和视频教学文件。此外,读者还可以...

    PL/SQL Developer

     模板列表——PL/SQL Developer的模板列表可用作一个实时的帮助组件,协助您强制实现标准化。只要点击相应的模板,您就可以向编辑器中插入标准的SQL或PL/SQL代码,或者从草稿出发来创建一个新程序。  查询构建器...

    精通JS脚本之ExtJS框架.part1.rar

    最后利用一个商品信息管理系统和一个企业任务管理系统,向读者演示了ExtJS在实际项目中的应用以及实现流程。  《精通JS脚本之ExtJS框架》附有配套光盘,提供了书中实例的源代码和视频教学文件。此外,读者还可以...

    PL/SQL Developer v8.0.zip

    模板列表——PL/SQL Developer的模板列表可用作一个实时的帮助组件,协助您强制实现标准化。只要点击相应的模板,您就可以向编辑器中插入标准的SQL或PL/SQL代码,或者从草稿出发来创建一个新程序。 查询构建器——...

    PLSQL Developer(免安装、汉化版,很好用的) 8.0.3.1510.rar

     模板列表——PL/SQL Developer的模板列表可用作一个实时的帮助组件,协助您强制实现标准化。只要点击相应的模板,您就可以向编辑器中插入标准的SQL或PL/SQL代码,或者从草稿出发来创建一个新程序。  查询构建...

Global site tag (gtag.js) - Google Analytics