Sommer - 云代码空间
——
当我一开始接触对于java操作数据库的时候,使用的是JDBC框架(因为你不得不承认不是所有的项目都需要hibernate)。一开始的编程我都是没有任何的感觉的,因为对jdbc并不是非常的懂,慢慢的,随着Demo越来越多,我发现JDBC框架是繁琐并且枯燥的。不难发现,基本所有的Dem的DAO层对于数据库的操作都少不了(CRUD)。我开始想着,我们学的java思想不就是要对其公共的进行封装么?于是我开始试着去“偷懒”......
看着这些代码。我觉得可以将之分为两种类型:“改” 和 “查”。没错,基本所有的‘增’,‘删’,‘改’都有着很多的相似点,例如返回时void,唯一不同的就是sql语句,以及对于sql语句中的参数。所以,我将sql语句,以及sql语句中的操作值进行抽取,以参数的形式传给一个公共的方法。参数由于有多个,我将其存在一个数组中。作为一个编辑者,我们并不知道用户传进的是什么类型的值,所以我选取了Object类型的数组进行封装。
对于‘查’。其实有很多的原理类似于‘改’。唯一让我不同的是对于用户需要返回的是什么类型,我们作为设计者是无法得知的。或许很多人这个时候就开始不知所措。其实这个时候需要的是一种开发中的思想。对于我们无法知道的,我们可以给框架的调用者返回一个接口。因为用户肯定知道自己的需求是什么,在接口中暴露一个处理方法给用户自己去实现。所以在‘查’这个方法中我们需要用户传给我们的就是:sql语句,参数数组,一个如何去处理这个结果集的接口(如果接口没在以下说出,可以在开发中自己写一个接口实现)
对于这个接口(ResultSetHandler)的实现,我给大家封装了三个最常用的:返回一个bean对象(BeanHandler),返回一个封装所有bean的集合(ListBeanHandler),返回一个获取所有数据的数量的接口(IntResultSetHandler)。
当我写完这个自己整合过的JDBC后,虽然写的很好也不是很全面。但是在Dao层上每一个‘增’,‘删’,‘改’方法我可以不超过4行代码。‘查’方法同样变得很整洁。(具体看代码)在数据库的资源释放,一个项目中对于数据库的如何更好的初始化一般操作都差不多了。
以下我已数据库连接池dbcp作为一个小Demo
为什么用数据库连接池获取链接以及如何用数据库连接池获取链接自己去百度详细了解~~~(Demo下载网址:http://yuncode.net/code/c_51778bddcaf2999)