DBUtils工具类的使用

【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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值