反射机制简化Dao层开发

本文通过Java反射机制,创建连接池并封装DataSourceDeal类处理数据库操作,如执行SQL和处理结果集。DaoUtil类进一步利用反射将Entity转换为SQL,只需提供Entity实例即可完成数据库交互。该方法简化了DAO层的开发,但要求Entity类遵循特定规则,例如有名为id的标识符。示例代码展示了简单的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考了:Java反射机制在DAO层的应用实例

所完成的功能是:由于Dao层有很多代码都是重复的,故想要使用几个类封装一下这个过程。

结果实现:完成Dao层的基础功能,更多的功能可以继续封装,也可以由开发者自己实现。代码在下边,需要的请自取。

基本思路是:
首先创建一个连接池存储数据库链接,再使用一个类 DataSourceDeal 封装了处理数据库的过程,完成包括取数据库连接,传sql语句,执行sql语句,处理结果集,关闭PreStatement和ResultSet,回收数据库连接等一系列动作。在处理除了select操作外其他操作都可以直接传入sql语句,然后执行就可以获得操作结果。需要处理select操作时,也仅仅只需重写getObjectFromResult()方法。最后使用一个类 DaoUtil 使用反射机制封装了将Entity转变成执行sql的过程,也就是说仅仅调用DaoUtil中的方法,提供一个Entity实例参数就可以完成数据库的处理了。 是不是很简单?
简单是有代价的,其实也不算代价,只是将一些编写数据库的常用的行为规范化起来而已。
1:Entity的成员变量中必须有一个标识号,名字必须以id结尾,而且不能只是id。
2:Entity中只能有一个以Id结尾的成员变量。
3:Entity中的成员变量由至少两个单词组成,单词用驼峰命名法。
4:数据库中字段命名和Entity一样。

主要部分代码(仅展示部分代码一部分完整版可去下方下载):

/**
  *这部分代码主要功能是向数据库中插入一个bean对象
  *
  */
// 完成对象的插入
    public static Object insertObject(Object obj) {
        StringBuilder sb = new StringBuilder("insert into ");
        // 获取表名
        Class<?> c = obj.getClass();
        // 添加到sql语句中
        sb.append(getTableNameFromClass(c));
        // 获取所有的Field和Method
        Method[] methods = c.getDeclaredMethods();
        // 存放表名和值的容器
        List<String> tableNames = new ArrayList<String>();
        final List tableValues = new ArrayList();
        // 填充容器
        for (Method m : methods) {
            String mName = m.getName();
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值