本文使用的数据表如下
本文连接数据库方式采用 Druid 连接池,有不清楚的小伙伴可以参考博文
【JDBC笔记】Druid数据库连接池实现连接_李既白的博客-CSDN博客
如果不用 ResultSetHandler 中定义好的实现类,我们想自己写一个
比如自定义一个查询操作吧,我们需要重写 handle 方法即可
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.junit.Test;
import com.alibaba.druid.pool.DruidDataSourceFactory;
public class ResultSetHandlerTest {
@Test
public void ResultSetHandlerT() throws Exception {
//自定义 ResultSetHandler 实现对应操作
Properties pros = new Properties();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
pros.load(is);
DataSource source = DruidDataSourceFactory.createDataSource(pros);
Connection conn = source.getConnection();
QueryRunner runner = new QueryRunner();
String sql = "select id,name,email,birth from Customers where id = ?";
ResultSetHandler<Customer> handler = new ResultSetHandler<Customer>() {
@Override
public Customer handle(ResultSet rs) throws SQLException {
if (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
Date birth = rs.getDate("birth");
Customer customer = new Customer(id, email, name, birth);
return customer;
}
return null;
}
};
Customer customer = runner.query(conn, sql, handler, 23);
System.out.println(customer);
conn.close();
}
}