我实现的一个dao助手类
?
这个类蛮实用的,我在几个项目中都使用。接口如下:
public interface DaoHelper {
??? boolean add(String sql, Object... args);
??? boolean add(String sql, Connection conn, Object... args);
??? int update(String sql, Object... args);
??? int update(String sql, Connection conn, Object... args);
??? boolean delete(String sql, Object... args);
??? boolean delete(String sql, Connection conn, Object... args);
??? Object getObject(String sql, Class obj, Object... args);
??? Object getObject(String sql, Connection conn, Class obj,Object... args);
??? List<Object> getList(String sql, Class obj, Object...args);
??? String queryForString(String sql, Object... args);
??? Long queryForLong(String sql, Object... args);
??? Boolean queryForBoolean(String sql, Object... args);
??? Connection getConn();
??? void returnConnection(Connection conn);
??? void rollBack(Connection conn);
}
<!---->(1)?????? <!---->第一个add方法用来执行insert语句,并且提交事务;sql为数据库语句,args为数据库参数,要和数据库语句里的“?”对应。
<!---->(2)?????? <!---->第二个add方法多了一个Connetion参数,该方法将使用这个Conn来创建PreparedStatement,但是执行结束后不提交,需要手动提交。
<!---->(3)?????? <!---->其他update、delete同上
<!---->(4)?????? <!---->?getObject方法返回一个bean,把ResultSet转化为Bean,bean的属性必须和数据库列名称相同。
<!---->(5)?????? <!---->?getList方法返回一个List,将ResultSet处理为一个List返回
<!---->(6)?????? <!---->?queryForString,queryForLong,queryForBoolean将分别返回String、Long、Boolean结果。
实现我使用了apache common里的dbutils包,另外由DataSource提供数据库Connection,我使用的是c3p0的实现,用spring bean set 注入的。代码参考附件。
?
PS:抛砖引玉,大家要是有更好的方法的话,可以拿出来共享一下,提高代码质量、加快开发速度。
?
5 楼 stworthy 2008-09-08 异常都给你拦截了,只是简单的printStackTrace,对调用者不负责任。 6 楼 aninfeel 2008-09-08 org.apache.commons.dbutils.BeanProcessor,真是好东西。我还一直用beanutil 7 楼 mycybyb 2008-09-12 自己也实现了个类似的东东 8 楼 Ethan 2008-09-14 个人认为写这样的Util类,意义不大。很显然然你只是能够运行,却没有对资源的管理,资源管理居然和操作行为耦合在一起了!建议还是先把Java EE的层次结构弄清楚,这样设计出来的东西不会出现这么低级的失误! 9 楼 donyee 2008-09-28 Ethan 写道