近期在查阅相关资料的时候,发现了一个很好用的工具包,赶紧写篇博客记录一下,方便以后使用。这个工具包就是Apache的DbUtils工具包。这个工具十分的强大,其实它就是JDBC轻量级封装的工具包,最核心的特性是在JDBC的基础上做了一层封装,主要是对结果集的封装,可以直接将查询出来的结果集封装成JavaBean,为我们的查询提供了非常大的便利!
但是有一点要注意的是必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名必须一一对应,不要求JavaBean的私有成员与表结果集列名一一对应。
DBUtils可以将结果集封装为各种类型
主要有:Bean/List,Map/List/Map,数组/List<数组>,列/List<列>,这些类型。
常用的API介绍:
DbUtils:一个为简化JDBC操作的小类库
AbstractQueryRunner:是抽象类,QueryRunner和AsyncQueryRunner类的基类。
AsyncQueryRunner:可插拔的方式执行SQL查询,处理结果集。是线程安全的类。
BaseResultSetHandler:把结果集转换成其它对象的扩展。
BeanProcessor:BeanProcessor匹
GenerousBeanProcessor:提供了从数据库列名到JavaBean属性之间的智能匹配。
ProxyFactory:产生JDBC接口的代理实现。
QueryLoader:属性文件加载器,主要用于加载属性文件中的SQL到内存中。
QueryRunner:使用可插拔的策略执行SQL查询并处理结果集。
ResultSetHandler:把ResultSet转换为别的对象的工具。
ResultSetIterator:包装结果集为一个迭代器。
RowProcessor:将ResultSet行转换为别的对象的工具。
代码展示:
public Map<String,Object> getScrollGood()throws SQLException{
QueryRunner q = new QueryRunner(DBUtil.getDataSource());
String sql="select g.id,g.name,g.cover,g.price from recommend r,goods g where type=1 and r.goods_id=g.id";
return q.query(sql, new MapHandler());
}
public void insert(Goods g) throws SQLException {
QueryRunner q = new QueryRunner(DBUtil.getDataSource());
String sql = "insert into goods(name,cover,image,price,type_id) values(?,?,?,?,?)";
q.update(sql,g.getName(),g.getCover(),g.getImage(),g.getPrice(),g.getType().getId());
}
通过所使用的代码我们可以发现代码被大大的简化了,尤其是针对于查询将会更加的方便。