DbUtils :提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的
DBUtils是java编程中的数据库操作实用工具,小巧简单实用
1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作; 2.对于数据表的写操作,也变得很简单(只需写sql语句) 3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。
DBUtils包括3个包:
org.apachemons.dbutilsorg.apachemons.dbutils.handlersorg.apachemons.dbutils.wrappers
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
- org.apachemons.dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 - org.apachemons.dbutils.handlers 1.ArrayHandler :将ResultSet中第一行的数据转化成对象数组 2.ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[] 3.BeanHandler :将ResultSet中第一行的数据转化成类对象 4.BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象 5.ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象 6.KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据 7.MapHandler :将ResultSet中第一行的数据存成Map映射 8.MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map 9.ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object - org.apachemons.dbutils.wrappers SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值 StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim() - 主要方法: 1.DbUtils类:启动类 2.ResultSetHandler接口:转换类型接口 3.MapListHandler类:实现类,把记录转化成List BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象 4.Query Runner类:执行SQL语句的类
另外,还有一个dbutils扩展包commons-dbutils-ext.jar,主要是对dbutils的扩展 功能,简化了其操作
下面我通过代码来演示具体的操作:
增加操作
@Test//使用dbUtils工具的数据库插入代码实现 public void dbUtilInsert() throws SQLException{ DataSource pool=C3p0Pool.getPool(); QueryRunner qr=new QueryRunner(pool); //statement方式 String sql="insert into stud values('A001','张三')"; qr.update(sql); //prepareStatement方式 String sql2="insert into stud(id,name) values(?,?)"; qr.update(sql2,"A002","Jack"); dbUtilQuery(); }
删除操作
@Test//使用dbUtils工具的数据库删除代码实现 public void dbUtilDelete() throws SQLException{ DataSource pool=C3p0Pool.getPool(); QueryRunner qr=new QueryRunner(pool); String sql="delete from stud where name='李白'"; qr.update(sql); String sql2="delete from stud where name=?"; qr.update(sql2,"大哥"); dbUtilQuery(); }
修改操作
@Test//使用dbUtils工具的数据库更改代码实现 public void dbUtilUpdate() throws SQLException{ DataSource pool=C3p0Pool.getPool(); QueryRunner qr=new QueryRunner(pool); //statement方式 String sql="update stud set name='李白' where id='A002' "; qr.update(sql); //prepareStatement方式 String sql2="update stud set name=? where id=?"; qr.update(sql2,"大哥","A001"); dbUtilQuery(); }
查询操作
@Test//使用dbUtils工具的数据库查询代码实现,封装成beanList public void dbUtilQuery() throws SQLException{ DataSource ds=new ComboPooledDataSource(); QueryRunner qr=new QueryRunner(ds); String sql="select * from stud"; List studs=qr.query(sql, new BeanListHandler(Stud.class) ); System.out.println(studs); } @Test///封装成MapList public void dbUtilQuery2() throws SQLException{ DataSource ds=new ComboPooledDataSource(); QueryRunner qr=new QueryRunner(ds); String sql="select * from stud"; List