【commons-dbutils-1.7.jar】
QueryRunner类常用的方法
public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:
执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException:
几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。
public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException :
执行一个不需要置换参数的查询操作。
public int update(Connection conn, String sql, Object[] params) throws SQLException:
用来执行一个更新(插入、更新或删除)操作。
public int update(Connection conn, String sql) throws SQLException:
用来执行一个不需要置换参数的更新操作。
数据的"增删改"操作
/***
*数据的增删改
*只更改如下代码的sql语句和执行语句即可
*如下只展示添加操作
*/
public void testInsert(){
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = TestDruid.getConnection();//获取数据库连接池连接
String sql = "INSERT INTO form1(user,password)VALUES(?,?)";//增加语句
int update = runner.update(conn, sql, "风清扬","123456");
System.out.println("添加进去了");
} catch (Exception e) {
e.printStackTrace();
}finally {
TestDruid.closeResource(conn, null);
}
}
ResultSetHandler的实现类,用于---------数据的"查询"操作
- BeanHandler----------查询表中一条数据,以数组方式显示
public void testQuery1(){
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = TestDruid.getConnection();
String sql = "SELECT user,password FROM form1 WHERE id = ?";
BeanHandler<User> handler = new BeanHandler<>(User.class);//ORM编程思想,一个数据表对应一个Java类,其中User类中的变量即为数据库中的一个字段,一一对应,getset方法 toString方法 有参无参构造
User query = runner.query(conn, sql, handler, 2);
System.out.println(query);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
TestDruid.closeResource(conn, null);
}
}
//输出显示
//User [id=0, user=柳白, mail=null, password=123456]
- BeanListHandler-----查询表中多条数据,以数组方式显示
public void testQuery2(){
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = TestDruid.getConnection();
String sql = "SELECT user,password FROM form1 WHERE (id <= ? && id >=?)";
BeanListHandler<User> handler = new BeanListHandler<>(User.class);
List<User> list = runner.query(conn, sql, handler, 24,5);
list.forEach(System.out::println);//list集合的输出方式
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
TestDruid.closeResource(conn, null);
}
}
//输出显示
//User [id=0, user=杨幂, mail=null, password=123456]
//User [id=0, user=剑圣, mail=null, password=123456]
- MapHandler-----------查询表中一条数据,以Map集合方式显示
public void testQuery3(){
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = TestDruid.getConnection();
String sql = "SELECT user,password FROM form1 WHERE id = ?";
MapHandler handler = new MapHandler();
Map<String, Object> map = runner.query(conn, sql, handler, 2);
System.out.println(map);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
TestDruid.closeResource(conn, null);
}
}
//输出显示
//{user=柳白, password=123456}
- MapListHandler------查询表中多条数据,以Map集合方式显示
public void testQuery4(){
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = TestDruid.getConnection();
String sql = "SELECT user,password FROM form1 WHERE id < ?";
MapListHandler handler = new MapListHandler();
List<Map<String, Object>> maplist = runner.query(conn, sql, handler, 5);
maplist.forEach(System.out::println);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
TestDruid.closeResource(conn, null);
}
}
//输出显示
//{user=柳白, password=123456}
//{user=邪剑仙, password=123456}
- ScalarHandler--------根据用户指定查询数据,可查询表中数据个数,表中数据指定值的最大最小值等等......
public void testQuery5(){
Connection conn = null;
try {
QueryRunner runner = new QueryRunner();
conn = TestDruid.getConnection();
String sql = "SELECT count(*) FROM form1";//查询表中数据数量
ScalarHandler<Object> hanlder = new ScalarHandler<>();
Long count = (Long)runner.query(conn, sql, hanlder);
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
TestDruid.closeResource(conn, null);
}
}
//输出显示
//10
使用DBUtils的关闭资源
DbUtils.closeQuietly(rs);
DbUtils.closeQuietly(ps);
DbUtils.closeQuietly(conn);