请各位高手给我详细说下DButil 。

网友 5

最佳答案

回答者:网友
首先嘛,DBUTIL顾名思义就是DB的一个帮助。它的出现是因为在程序中有过多的JDBC重复代码。DBUTIL就是将这些重复代码抽取出来。简单的来说,就是对JDBC的一个简单封装。 DBUTIL的优点就是:简洁,简单;而他的缺点则是没有对事务提交进行封装。 使用时,先要重写DataSoure,继承BasicDataSource类,这个类主要是用来得到数据库连接。然后使用QueryRunner来关联。 DBUTIL中会需要实现ResultSetHandler接口,他的子类有很多,列如BeanList,Bean,List...这样就能满足客户端的不同需求。 这里用BeanListHandler来举例。 DBUTIL中使用元数据与Bean实现动态赋值。将元数据实现动态匹配。并根据所传过来的handler来对Result进行封装。例如这里用BeanList来举例,它会将Result利用反射机制封装成BeanList返回。 DBUTIL是对JDBC的一种简单的封装,他比JDBC更简洁,简单。使用起来只需要写好语句不用在意繁琐的代码实现。 从DBUTIL中你应该能体验到元数据,反射,泛型,变长参数的应用。还有代码尽量精简。 呵呵,纯手打。请采纳。

回答

其他回答
是自己写的类,从名字上看应该是负责连接数据库用的
回答者:网友
其他回答
如果你不想用DButil的话,可以试试直接用JDBC,当你直接用JDBC后,很多时候,会有不少的重复代码, 到那个时候,你就发现DButil是有用的,相对而言,也是设计良好的。
回答者:网友
其他回答
Apache 的Dbutil是一个非常好用的工具,尤其在它可以很方便的把JDBC中SELECT语句的结果集rs转化为任何我们想要的数据类型。 以下为示例: public XsModel getByID(String xh)throws SQLException{ XsModel model=null; ResultSet rs=null; StringBuffer sql=new StringBuffer(); try{ //获取SQL sql.append("select * from xsxxb where xh='"); sql.append(xh); sql.append("'"); rs = bean.excutequery(sql.toString()); if(rs.next()) { model=(XsModel) this.getModelBySql(sql.toString(),XsModel.class);//通过Dbutil把r s变为Model } }catch(SQLException e){ e.printStackTrace(); }finally { if(rs!=null) rs.close(); rs=null; } return model; } /*通过Apache dbutil直接得到model 注意参数中的beanClass是你想要转换的类型名 注意query的参数中有个ResultsetHandler,ResultsetHandler是个接口,实现此接口的方法很多(详见commons DbUtils 1.2 API)在调用时用其中一种即可 在以下函数中使用了BeanHandler 在getByID函数中调用了此函数 */ public Object getModelBySql(String sql,Class beanClass) throws SQLException { Object model=null; QueryRunner qr = new QueryRunner(); model=qr.query(bean.getConnection(),sql,new BeanHandler(beanClass)); //model=qr.query(bean.getConnection(),sql,new ArrayHandler()); return model; } 程序中全部代码: 本例中用的是oracle数据库,数据库中有表xxssb,所含字段Xmodel.java中有。 1、dbutil出现的原因: a、大量的重复代码 b、jdbc的简单封装 c、使用策略模式可以生成不同的返回类型 2、技术要点: a、反射 b、泛型 c、元数据 d、可变参数 3、流程: 1、客户端调用query方法,进入该方法首先使用工厂模式创建一个数据库连接对象,这样的好处是隐藏了new的关键字, 并且代码的扩展性很强,改变了具体的实现类不影响系统的构架, 2、通过适配器模式(adaper)来兼容了一些查询的功能,这样可以使客户调用起来更方便,然后又通过一个工厂模式 得到了一个预处理对象,得到对象之后把这个预处理对象填充条件(问号),如果可变参数没有值的话则直接返回, 否则把可变参数的值一一设置到预处理对象中。 3、这里又使用了策略模式来解决了返回类型,它可以取决与客户需要的是set还是list、或者是map类型,然后创建了一 个集合。通过反射技术来得到属性类的所有信息,像set、get方法和字段,之后通过结果集的元数据来得到表中的列信息, 把属性和数据库中的列一一对应,这样是防止了表中的列和属性类中的属性顺序不一样而判断的。 4、最后才创建bean,首先使用了反射机制来生成一个对象,然后处理的数据的类型,处理完之后调用了属性类中的set方 法把相应的值设置的属性中,然后把每一个对象都设置好封装成一个bean,最后把这些bean存放到集合(set、list), 或者map中返回。 它呢就相当与jquery和js的关系,这里是dbutil和的jdbc,如果要进一步了解就加Q296307031
回答者:网友
其他回答
DBUtil是做JDBC连接数据库的时候, 开发人员为了避免重写取得和关闭 connection 等于数据库操作又关的代码,自己写的一个工具类。
回答者:网友
我来回答