美文网首页Java 杂谈程序员
Jdbc工具类——TxQueryRunner

Jdbc工具类——TxQueryRunner

作者: 深海鱼Q | 来源:发表于2017-05-02 12:48 被阅读0次

经常使用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<T> rh)
    此方法执行查询语句,参数sql是要执行查询语句的模板,rh是结果集,用来把结果集映射成你想要的
    结果
  • T query(String sql, ResultSetHandler<T> 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> T query(String sql, ResultSetHandler<T> 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> T query(String sql, ResultSetHandler<T> 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>(Person.class), pid);
    }
    
    public List<Person> findAll() throws SQLException {
        String sql = "select * from t_person";
        return qr.query(sql, new BeanListHandler<Person>(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<Person> list = dao.findAll();
        System.out.println(list);
    }
}

相关文章

  • Jdbc工具类——TxQueryRunner

    经常使用common-dbutils.jar包来进行数据库的dao操作,其中有一个QueryRunner类,今天编...

  • Day05--JDBC

    JDBC: 抽取JDBC工具类:JDBCUtils JDBC控制事务

  • JDBC

    JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • JDBC

    JDBC原理: JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • 04 JDBC

    今日内容 JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • 5.JDBC

    主要内容 JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • JDBC抽取工具类 -JDBCUtils

    抽取JDBC工具类 : JDBCUtils

  • JDBC工具类

    DBUtil.java 配置文件db.properties:

  • jdbc工具类

    public class jdbcUtil { private static Stringurl; priva...

  • JDBC和JDBC工具类

    JDBC开发步骤: 1.注册 驱动 2.获得连接 3.获得语句执行平台 4.执行SQL语句 5.处理结果 6.释放...

网友评论

    本文标题:Jdbc工具类——TxQueryRunner

    本文链接:https://www.haomeiwen.com/subject/hdectxtx.html