TxQueryRunner类是common-dbutils.jar下QueryRunner类的子类,用来简化JDBC操作。TxQueryRunner与其父类相比支持事务,底层使用了JdbcUtils来获取连接。
(1)int update(String sql):执行增、删、改语句,参数sql是要执行的SQL语句;
(2)int update(Stringsql, Object param):执行增、删、改语句,参数sql是要执行的SQL语句,参数param是参数(一个参数);
(3)int update(String sql, Object… params):执行增、删、改语句,参数sql是要执行的SQL语句,参数params是参数(多个参数);
package cn.baldprogrammer.test; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import org.junit.Test; import cn.jdbc.TxQueryRunner; public class TxQueryRunnerTest { //QueryRunner的update方法 @Test public void testUpdate() throws SQLException{ String sql="insert into t_person(pid,pname,age,sex) values(?,?,?,?)"; Object[] params={"p_002","bill",23,"男"};//给出sql语句中对应的参数 QueryRunner qr=new TxQueryRunner();//没有给对象提供连接池 qr.update(sql,params);//内部使用jdbcUtils来获取连接 } }package cn.baldprogrammer.test; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import org.junit.Test; import cn.itcast.jdbc.JdbcUtils; import cn.jdbc.TxQueryRunner; public class TxQueryRunnerTest { @Test public void testUpdate2() throws Exception{ try{ JdbcUtils.beginTransaction();//开启事务 //可对数据库进行多次操作 String sql="insert into t_person(pid,pname,age,sex) values(?,?,?,?)"; QueryRunner qr=new TxQueryRunner();//没有给对象提供连接池 Object[] params={"p_003","lisa",56,"女"}; qr.update(sql,params); if(false){ throw new Exception(); } params=new Object[]{"p_004","lusi",18,"女"}; qr.update(sql,params); JdbcUtils.commitTransaction();//提交事务 }catch(Exception e){ try { JdbcUtils.rollbackTransaction();//回滚事务 } catch (SQLException e1) { } throw e; } } }
query(String sql, ResultSetHandler<T> rh, Object… params):执行查询,参数sql为要执行的查询语句模板,rh是结果集处理,用来把结果集映射成你想要的结果,params是sql语句的参数;
package cn.baldprogrammer.test; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.junit.Test; public class TxQueryRunnerTest { //测试查询方法,JDBC查询的结果是ResultSet,QueryRunner查询的结果是ResultSet映射后的结果 //QueryRunner第一步执行seslect,得到ResultSet,第二步把ResultSet转换成其他结果(JavaBean/Map/Object) @Test //单行结果集映射到JavaBean中 public void testQuery1() throws SQLException{ String sql="select * from t_person where pid=?"; QueryRunner qr=new TxQueryRunner(); Person p=qr.query(sql, new BeanHandler<Person>(Person.class),1); System.out.println(p); } }