美文网首页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

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