Jdbc工具类——TxQueryRunner

经常使用common-dbutils.jar包来进行数据库的dao操作,其中有一个QueryRunner类,今天编写的TxQueryRunner类是QueryRunner的子类,更加简化了jdbc的操作。在TxQueryRunner中获取连接对象和关闭连接用到了之前写的文章JdbcUtils里的方法,点击进入→Jdbc工具类——JdbcUtils

涉及jar包:
common-dbutils.jar

TxQueryRunner中的方法

  • int[] batch(String sql, Object[][] parms)
    此方法执行批处理,参数sql是SQL语句模板,params为对应的参数
  • T query(String sql, ResultSetHandler rh)
    此方法执行查询语句,参数sql是要执行查询语句的模板,rh是结果集,用来把结果集映射成你想要的
    结果
  • T query(String sql, ResultSetHandler rh, Object… params)
    此方法执行查询语句,参数sql是要执行查询语句的模板,rh是结果集,用来把记过映射成你想要的
    结果,params是sql语句的参数
  • int update(String sql)
    此方法执行增、删、改语句,参数sql是要执行的SQL语句
  • int update(Stringsql, Object param)
    此方法执行增、删、改语句,参数sql是要执行的SQL语句,param是参数(一个参数)
  • int update(String sql, Object… params)
    此方法执行增、删、改语句,参数sql是要执行的SQL语句,param是参数(多个参数)

代码

package com.java.jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;

public class TxQueryRunner extends QueryRunner {

    @Override
    public int[] batch(String sql, Object[][] params) throws SQLException {
        Connection con = JdbcUtils.getConnection();
        int[] result = super.batch(con, sql, params);
        JdbcUtils.releaseConnection(con);
        return result;
    }

    @Override
    public  T query(String sql, ResultSetHandler rsh, Object... params)
            throws SQLException {
        Connection con = JdbcUtils.getConnection();
        T result = super.query(con, sql, rsh, params);
        JdbcUtils.releaseConnection(con);
        return result;
    }
    
    @Override
    public  T query(String sql, ResultSetHandler rsh) throws SQLException {
        Connection con = JdbcUtils.getConnection();
        T result = super.query(con, sql, rsh);
        JdbcUtils.releaseConnection(con);
        return result;
    }

    @Override
    public int update(String sql) throws SQLException {
        Connection con = JdbcUtils.getConnection();
        int result = super.update(con, sql);
        JdbcUtils.releaseConnection(con);
        return result;
    }

    @Override
    public int update(String sql, Object param) throws SQLException {
        Connection con = JdbcUtils.getConnection();
        int result = super.update(con, sql, param);
        JdbcUtils.releaseConnection(con);
        return result;
    }

    @Override
    public int update(String sql, Object... params) throws SQLException {
        Connection con = JdbcUtils.getConnection();
        int result = super.update(con, sql, params);
        JdbcUtils.releaseConnection(con);
        return result;
    }
}

测试TxQueryRunner

在mysqltest数据库中创建一个person表,然后创建Person实体类,以及PersonDao类,测试PersonDao类中的方法

person表

字段 说明
id 主键
name 姓名
age 年龄
birthday 生日

Person.java

public class Person {
    private String id;
    private String name;
    private int age;
    private Date birthday;
        …
        ...
}

PersonDao.java

/**
 * 测试TxQueryRunner
 */
public class PersonDao {
    private QueryRunner qr = new TxQueryRunner();
    
    public void add(Person person) throws SQLException {
        String sql = "insert into t_person values(?,?,?,?)";
        Object[] params = {person.getid(), 
                person.getName(), 
                person.getAge(), 
                new java.sql.Date(person.getBirthday().getTime())};
        qr.update(sql, params);
    }
    
    public void edit(Person person) throws SQLException {
        String sql = "update t_person set name=?,age=?,birthday=? where pid=?";
        Object[] params = { 
                person.getName(), 
                person.getAge(), 
                new java.sql.Date(person.getBirthday().getTime()),
                person.getid()};
        qr.update(sql, params);
    }
    
    public void delete(String id) throws SQLException {
        String sql = "delete from t_person where id=?";
        qr.update(sql, id);
    }
    
    public Person load(String id) throws SQLException {
        String sql = "select * from t_person where id=?";
        return qr.query(sql, new BeanHandler(Person.class), pid);
    }
    
    public List findAll() throws SQLException {
        String sql = "select * from t_person";
        return qr.query(sql, new BeanListHandler(Person.class));
    }
}

PersonDaoTest.java

public class PersonDaoTest {
    @Test
    public void testAdd() throws SQLException {
        Person p1 = new Person(CommonUtils.uuid(), "小明", 11, new Date());
        Person p2 = new Person(CommonUtils.uuid(), "小强", 22, new Date());
        Person p3 = new Person(CommonUtils.uuid(), "小白", 33, new Date());
        
        PersonDao dao = new PersonDao();
        dao.add(p1);
        dao.add(p2);
        dao.add(p3);
    }
    
    @Test
    public void testEdit() throws SQLException {
        PersonDao dao = new PersonDao();
        Person person = dao.load("2F371BE415984DE89781CCCA7B8734CB");
        person.setAge(88);
        dao.edit(person);
    }
    
    @Test
    public void testDelete() throws SQLException {
        PersonDao dao = new PersonDao();
        dao.delete("2F371BE415984DE89781CCCA7B8734CB");
    }
    
    @Test
    public void testFindAll() throws SQLException {
        PersonDao dao = new PersonDao();
        List list = dao.findAll();
        System.out.println(list);
    }
}

你可能感兴趣的:(Jdbc工具类——TxQueryRunner)