经常使用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);
}
}
网友评论