封装数据库操作---数据实体操作封装(一)

    com.spkg.com插件下载地址:http://download.csdn.net/detail/ping802363/9834263

    在还未接触Java WEB开发学习之前,总是很好奇网站是如何做的,网站对用户来说操作很方便,只需要输入网址就可以使用网站提供的服务,而不用很麻烦的安装客户端。后来做了很长时间的JAVA WEB项目开发,说起WEB开发,不得不想起MVC模型,老师经常提及的Controller(控制层),Service(服务层),Dao(持久层)。项目做了几个之后,不得不感觉持久层中封装的方法普遍都是同一种类型,插入、删除、修改、查询(所有,分页),做多了就是重复的工作,难免麻烦,但每学期有些动手性较强的课程需要交一个项目,如果每个项目,每个项目的每张表都写几个类型相同的代码,那心情。。。。。。

    为了避免这样的重复工作,我开始封装了一个插件,即com.spkg.com。此插件封装了对数据库的操作,即执行用户的插入、修改、删除等语句;根据实体模型自动生成插入、修改、删除、查询语句;构建常用的Dao层模型;数据集模型(即将数据库返回的数据集ResultSet存储在内存中,提供类似的方法获取数据)。

    首先说明下数据库操作的封装DBHelper,其中DataTable是数据集模型,提供了插入、修改、删除、查询、计数五类功能,查询有两种方法,第一种返回DataTable数据集模型,将返回的数据按类似的方法存储在内存,提供类似的方法获取数据集模型中的数据,第二种返回List,其中T是一种范型,在查询之前传递参数时,传递了类型为Class的tClass变量,是告诉方法查询的数据用什么实体模型来存数据,方法将数据查询出来并构建模型列表将数据装入其中。此类使用过程中要派生,getDUPU方法提供给子类一个接口告诉本类的链接字符串参数。

/**
 * 执行查询语句
 * @param sql 查询SQL语句
 * @return 查询数据集
 * @throws Exception
 */
 public DataTable query(String sql) throws SQLException;
/**
 * 执行查询语句,使用此方法时,实体类不能有基本数据类型,若查询的结果中没有此字段,直接置为空
 * 注意:实体的属性名需和数据库的字段名相同,不区分大小写,set函数规则为“set”+属性名并大写属性名
 * 对于自定义实体属性,需添加带有String参数的构造器,并将字段的值赋给属性类相应属性
 * @param tClass 实体的Class类型
 * @param sql 查询SQL语句
 * @return 查询实体集
 * @throws Exception
 */
 public List query(Class tClass, String sql) throws Exception;
/**
* 执行插入语句、更新语句、删除语句
* @param sql 修改的SQL语句
* @return SQL语句执行时影响的条数
* @throws Exception 
*/
public int insertOrUpdate(String sql)throws SQLException;
/**
* 查询语句计数
* @param sql
* @return
*/
public Integer count(Stringsql) throws SQLException;
/**
* 获取驱动,账号,密码,地址
* 与默认参数不一致时重载此方法
* @return [0]:驱动字符串,[1]:账号,[2]:密码,[3]:链接地址URL
*/
protected String[] getDUPU();
:本封装中使用了大量反射、注解、泛型,反射面对大量会影响项目的访问效率,平常作业的项目开发中因为不用在意效率所以关系不大,实际的项目中需要考虑。

你可能感兴趣的:(算法文库,封装艺术)