使用apache commons的DBUtils的数据库进行操作

7 篇文章 0 订阅
5 篇文章 0 订阅

目录

一、增、删、改操作

二、查询操作

1.ArrayHandler

2.ArrayListHandler

3.BeanHandler

4.BeanListHandler

5.ColumnListHandler

6.ScalarHandler

5.MapHandler

8.MapListHandler


使用JDBC开发的过程中,会发现代码比较的冗余,为了简化开发,我们可以使用apache commons组件一个成员:DBUtils

在开发资源首先要添加commons-dbutils-1.6.jar  或者其他版本 官方下载链接:http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi

一、增、删、改操作

调用QueryRunner类的方法 update (Connection con,String sql,Object...param)

在此案例中,只演示insert操作,update和delete操作只需要更改对应的SQL语句即可

public static void insert() throws Exception{
		// 创建QueryRunner对象
		QueryRunner qr = new QueryRunner();

		// 注册数据库驱动,并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);

		// SQL语句
		String sql = "INSERT INTO student(sname, sage) values(?,?) ";

		/*
		 * Connection conn:数据库连接对象 String sql:SQL语句
		 * Object...params:可变参数,传递SQL语句中的占位符
		 */
		Object[] params = { "王五", 20 };
		int result = qr.update(conn, sql, params); // 返回的int值代表更新了行数
		System.out.println("影响了" + result + "行");

		// 关闭资源,使用DbUtils中的closeQuietly()方法
		DbUtils.closeQuietly(conn);
	}

二、查询操作

1.ArrayHandler

ArrayHandler:将查询得到的结果集的第一条记录封装到一个Object数组中,数组中的每一个元素是这条记录的每一个字段对应的值

public static void arrayHandler() throws Exception{
		
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		//调用query()方法,将结果集处理实现类ArrayHandler对象传入
		Object[] objs = qr.query(conn, sql, new ArrayHandler());
		
		//增强for遍历数组
		for(Object obj : objs){
			System.out.println(obj);
		}
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

2.ArrayListHandler

ArrayListHandler:将查询到的结果集的每一条记录封装到Object数组中,再将这些数组封装到一个List集合中

public static void arrayListHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		//调用query()方法,将结果集处理实现类ArrayListHandler对象传入
		List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
		
		//增强for遍历集合
		for(Object[] objs : list){
			//增强for遍历数组
			for(Object obj : objs){
				System.out.print(obj);
			}
			System.out.println();
		}
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

3.BeanHandler

BeanHandler:将查询到的结果集第一条记录用JavaBean封装

public static void beanHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		/*
		 * 调用query()方法,将结果集处理实现类BeanHandler对象传入
		 * 此方法为泛型方法,泛型内写JavaBean对象
		 */
		Student stu = qr.query(conn, sql, new BeanHandler<Student>(Student.class));
		
		//JavaBean对象重写了toString()方法,可以直接输出
		System.out.println(stu);
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

4.BeanListHandler

BeanListHandler:将查询得到的结果集每一条记录封装到JavaBean对象中,再将JavaBean对象封装到List集合中

public static void beanListHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		/*
		 * 调用query()方法,将结果集处理实现类BeanListHandler对象传入
		 */
		List<Student> list = qr.query(conn, sql, new BeanListHandler<Student>(Student.class));
		//增强for遍历List集合
		for(Student s : list){
			System.out.println(s);
		}
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

5.ColumnListHandler

ColumnListHandler:将查询到的结果集根据指定的列名封装到List集合中

public static void columnListHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		/*
		 * 调用query()方法,将结果集处理实现类ColunmListHandler对象传入
		 * 在构造方法中传入指定的列名,可以是查询结果集列的索引,也可以是列名,建议使用列名
		 * 由于列的数据可以是很多种,所以泛型中传入Object
		 */
		List<Object> list = qr.query(conn, sql, new ColumnListHandler<Object>("sname"));
		//增强for遍历List集合
		for(Object obj : list){
			System.out.println(obj);
		}
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

6.ScalarHandler

ScalarHandler:用于单个数据,如count(*)等聚合函数

public static void scalarHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT COUNT(*) FROM student";
		
		/*
		 * 调用query()方法,将结果集处理实现类ScalarHandler对象传入
		 * 此处使用count(*)函数作为示例,底层使用long类型进行记录,所以泛型为Long
		 */
		long count = qr.query(conn, sql, new ScalarHandler<Long>());

		System.out.println(count);
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

7.MapHandler

MapHandler:将查询得到的结果集的第一条记录封装到一个Map集合中,key:列名,value:数据

public static void mapHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		/*
		 * 调用query()方法,将结果集处理实现类MapHandler对象传入
		 * key:列名,用String
		 * value:数据,数据有很多种类型,所以使用Object
		 */
		Map<String, Object> map = qr.query(conn, sql, new MapHandler());
		//增强for遍历Map集合
		for(String key : map.keySet()){
			System.out.println(key +"="+ map.get(key));
		}
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

8.MapListHandler

MapListHandler:将查询得到的结果集的每一条记录封装到Map集合中,再将Mao集合封装到一个List集合中

public static void mapListHandler() throws Exception{
		//注册数据库驱动并连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/mydb";
		String user = "root";
		String password = "123";
		Connection conn = DriverManager.getConnection(url, user, password);
		
		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner();
		
		//SQL语句
		String sql = "SELECT * FROM student";
		
		/*
		 * 调用query()方法,将结果集处理实现类MapHandler对象传入
		 * key:列名,用String
		 * value:数据,数据有很多种类型,所以使用Object
		 */
		List<Map<String, Object>> list = qr.query(conn, sql, new MapListHandler());
		//增强for遍历list集合
		for(Map<String, Object> map : list){
			//增强for遍历Map集合
			for(String key : map.keySet()){
				System.out.print(key+"="+map.get(key));
			}
			System.out.println();
		}
		
		//释放资源
		DbUtils.closeQuietly(conn);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值