JDBC使用数据库连接池和DBUtils增删改查代码示例

引言

主要使用数据库连接池,dbutils(QueryRunner类,ResultSetHandler接口及实现类)

  • 第一步 创建QueryRunner对象
  • 第二步 QueryRunner对象执行sql语句,返回结果
  • 第三步 关闭连接

代码示例:

 package demo2;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import javax.swing.JButton;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;

import utils.JDBCUtils;

public class Test2 {
	//修改id为23的birth为1999-09-09
	@Test
	public void test1() throws SQLException{
		//创建QueryRunner
		QueryRunner runner = new QueryRunner();
		//获取连接
		Connection conn = JDBCUtils.getConnection3();
		//创建sql语句
		String sql="update customers set birth=? where id=?";
		//执行sql语句
		int update = runner.update(conn, sql, "1999-09-09",23);
		System.out.println(update);
		//关闭连接
		JDBCUtils.closeResource1(conn, null, null);
	}
	//MapHandler获取id为23的name,email,birth
	@Test
	public void test2() throws SQLException{
		//创建QueryRunner
		QueryRunner runner = new QueryRunner();
		//获取连接
		Connection conn = JDBCUtils.getConnection3();
		//创建sql语句
		String sql="select name,email,birth from customers where id=?";
		//执行sql语句
		Map<String, Object> query = runner.query(conn, sql, new MapHandler(), 23);
		System.out.println(query);
		
		//关闭连接
		JDBCUtils.closeResource1(conn, null, null);
	}
	//MapListHandler获取id小于23的name,email,birth
		@Test
		public void test3() throws SQLException{
			//创建QueryRunner
			QueryRunner runner = new QueryRunner();
			//获取连接
			Connection conn = JDBCUtils.getConnection3();
			//创建sql语句
			String sql="select name,email,birth from customers where id<?";
			//执行sql语句
			List<Map<String,Object>> query = runner.query(conn, sql, new MapListHandler(), 23);
			for(Map<String, Object> map:query){
				System.out.println(map);
			}
			
			
			//关闭连接
			JDBCUtils.closeResource1(conn, null, null);
		}
		//BeanHandler获取id为23的name,email,birth
		@Test
		public void test4() throws SQLException{
			//创建QueryRunner
			QueryRunner runner = new QueryRunner();
			//获取连接
			Connection conn = JDBCUtils.getConnection3();
			//创建sql语句
			String sql="select name,email,birth from customers where id=?";
			//执行sql语句
			Customer customer = runner.query(conn, sql, new BeanHandler<>(Customer.class), 23);
			System.out.println(customer);
			
			//关闭连接
			JDBCUtils.closeResource1(conn, null, null);
		}
		//BeanListHandler获取id小于23的name,email,birth
		@Test
		public void test5() throws SQLException{
			//创建QueryRunner
			QueryRunner runner = new QueryRunner();
			//获取连接
			Connection conn = JDBCUtils.getConnection3();
			//创建sql语句
			String sql="select name,email,birth from customers where id<?";
			//执行sql语句
			List<Customer> list = runner.query(conn, sql, new BeanListHandler<>(Customer.class), 23);
			for(Customer c:list){
				System.out.println(c);
			}
			
			//关闭连接
			JDBCUtils.closeResource1(conn, null, null);
		}
		//ScalarHandler00000获取birth最大的值
		@Test
		public void test6() throws SQLException{
			//创建QueryRunner
			QueryRunner runner = new QueryRunner();
			//获取连接
			Connection conn = JDBCUtils.getConnection3();
			//创建sql语句
			String sql="select max(birth) from customers";
			//执行sql语句
			Object query = runner.query(conn, sql, new ScalarHandler());
			System.out.println(query);
			
			//关闭连接
			JDBCUtils.closeResource1(conn, null, null);
		}
}

介绍QueryRunner类

该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
主要方法:更新update,查询query

介绍ResultSetHandler接口及实现类

  • 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。

  • ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。

  • 接口的主要实现类:

    • ArrayHandler:把结果集中的第一行数据转成对象数组。
    • ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
    • BeanHandler: 将结果集中的第一行数据封装到一个对应的JavaBean实例中。
    • BeanListHandler: 将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
    • ColumnListHandler:将结果集中某一列的数据存放到List中。
    • KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
    • MapHandler: 将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
    • MapListHandler: 将结果集中的每一行数据都封装到一个Map里,然后再存放到List
    • ScalarHandler: 查询单个值对象
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值