使用反射实现万能DAO(基于JDBC)

来源:互联网 发布:苹果系统装windows 编辑:程序博客网 时间:2024/05/19 15:42

1 没有利用反射来对数据库进行操作

创建工具类:JDBCConnection(使用单列设计模式)

创建IBaseDao接口(Dao中常用的操作方法)

创建IStudentDao接口,让其继承BaseDao接口

创建ITeacherDao接口,让其继承BaseDao接口

创建StudentDao类,实现IStudentDao接口

创建TeacherDao类,实现IStudentDao接口

单元测试与实体类略,如果你喜欢,也可以添加一个工厂类来进行操作。在本组代码中,我们要关注的是IBaseDao中定义的方法,如我们这次定义的add()方法,我们通过分析代码,可以发现里面的很多代码可以重用,只有在SQL语句与使用setString(int parameterIndex, String x)这个方法的时候有所变化。SQL中也是表名与表的字段有所不同,如果你开发的实体类中的属性与表中列的命名是一致的话,完全可以通过反射来进行取得属性,然后进行字符串的拼接;setString(int parameterIndex, String x)的设置,可以通过循环反射得到的数组进行字符串的拼接来得到get的方法,但是遇到注意的是,因为我们的Id一般不是手动设置的,为了能很好的设置对应的值,我们在开发实体类的时候,必须把Id这个属性放到开头。

2 使用反射对上面的代码进行修改

创建BaseDao类,来实现IBaseDao接口,同时记StudentDao与TeacherDao继承它(同时还要删除之前我们实现的add方法的实现,不然这样就没有什么意义了,当然如果你不想使用在BaseDao实现的add方法,可能履写add方法)。每个表IXXDao也不需要再继承IBaseDao这个接口。

现在你无论添加多少表,对应的DAo只需要继承BaseDao类,就可以实现这个表添加操作

原创粉丝点击