JDBC连接MySQL数据库(六)——BDutils的使用

BDutils的使用

DButils的介绍

为了更加简单方便地使用JDBC,Apache组织提供了DButils工具,它是一个数据库的操作组件,实现了对JDBC的简单封装,在性能不受影响的条件下简化JDBC的操作。目前最新的版本应该是1.7的版本

QueryRunner的简介

QueryRunner类的使用极大的简化SQL语句的执行代码,与ResultSetHandler组合可以完成数据库的各种操作,QueryRunner类提供了 带有参数 的构造方法,此方法以javax.sql.DataSource为参数传入到QueryRunner的构造方法中获取Connection对象, 并且 针对不同的数据库操作,提供了不同的方法。

  • query(String sql ,ResultSetHandler rsh, Object … params)

    查询方法,这里的第二个 参数是ResultSetHandler 接口,查询的的是结果的信息,要求返回的是JavaBean ,泛型就是Bean类,在此需要建立接口的匿名实现类,重写handle并返回Bean对象,这里大概先知道有这么回事就行,一会看代码时具体解释, 这里的params是可变的参数,根据 SQL语句的具体情况设置参数。

  • update(String sql, Object … params)

    用与删除,插入,更新数据库信息,同样的params是可变参数。

ResultSetHandler接口
简介

ResultSetHandler接口用于处理RestultSet结果集,它可以将结果集中的数据转为不同形式,根据结果的数据类型的不同,ResultSetHandler提供了几种常见的实现类,具体如下:

  • BeanHander:结果集分装到JavaBean中, 保存一条数据。
  • BeanListHandler:将结果的每一条数据都分装到JavaBean实例中,存放到List,也就是保存多条数据
QueryRunner的基本使用
添加数据
	@Test
	public void testinsert() throws SQLException {
		ComboPooledDataSource datasource = new ComboPooledDataSource();
		QueryRunner queryrunner = new QueryRunner(datasource);
		queryrunner.update("insert into balance values(?,?)", "Bob",192);
	}
更新数据

还是刚刚的方法只需要更sql语句就行~

	@Test
	public void testupdate() throws SQLException {
		QueryRunner queryrunner = new QueryRunner(new ComboPooledDataSource());
		queryrunner.update("update  balance set balance = ? where name = ?", 8160, "Bob");
	}
删除数据
	@Test
	public void testdelete() throws SQLException {
		QueryRunner queryrunner = new QueryRunner(new ComboPooledDataSource());
		queryrunner.update("delete from balance where name=?", "Bob");
	}
查询数据
了解JavaBean

在使用DButils之前查询数据之前,我们首先大概地了解一下JavaBean

JavaBean 是java语言开发中 大的一个可以重复使用地软件组件,本质上就是 一个类,规范JavaBean的开发,Sun公司发布了JavaBean的规范,标准的JavaBean组件需要遵循如下规则:

  • 必须有一个公共的,无参的构造方法, 这个构造方法可以是编译器自动产生的构造方法
  • 它需要提供访问器(get)和修改器(set)让外部程序设置获取JavaBean的属性。

例如:

public class student{
   private String name;
   public String getName(){
      return name;
   }
   public void setName(String name){
      this.name = name;
   } 
}
基本查询

根据数据库的信息建立JavaBean实例:

package Bean;
public class account {
	private String name;
	private int balance
      
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getBalance() {
		return balance;
	}
	public void setBalance(int balance) {
		this.balance = balance;
	}
	@Override
	public String toString() {
		return "account [name=" + name + ", balance=" + balance + "]";
	}
}

查询代码:

	@Test
	public void testupdate() throws SQLException {
		QueryRunner queryrunner = new QueryRunner(new ComboPooledDataSource());
		queryrunner.update("update  balance set balance = ? where name = ?", 8160, "Bob");
	}
	@Test
	public void testquery() throws SQLException {
		QueryRunner queryrunner = new QueryRunner(new ComboPooledDataSource());
		account acc =queryrunner.query("select * from balance where name = ?", new ResultSetHandler<account>() {
			
			@Override
			public account handle(ResultSet rs) throws SQLException {
				account acc = new account();
				while(rs.next()) {
					String name = rs.getString("name");
					int balance = rs.getInt("balance");
					acc.setBalance(balance);
					acc.setName(name);
				}
				return acc;
			}
		},"Bob");
		System.out.println(acc.toString());
	}

使用query(String sql ,ResultSetHandler rsh, Object … params),方法注意:第二个参数是 ResultSetHandler 的匿名实现接口,而不是接口 的实例化,这一点类似与匿名内部类(Anonymous inner class)重写接口的里的方法,泛型为JavaBean对象实例对象中,保存数据的信息。

使用BeanHandler查询单一数据
	@Test
	public void testquery() throws SQLException {
		QueryRunner queryrunner = new QueryRunner(new ComboPooledDataSource());
		account acc = queryrunner.query("select * from balance where name = ?",  new BeanHandler<account>(account.class), "Bob");
		System.out.println(acc.toString());
	}

BeanHandler分装对应的JavaBean实例,保存单一的数据。

使用BeanListHandler多个数据
	@Test
	public void testquery() throws SQLException {
		QueryRunner queryrunner = new QueryRunner(new ComboPooledDataSource());
		List<account> list = queryrunner.query("select * from balance ?",  new BeanListHandler<account>(account.class));
		for(account acc :list) {
			System.out.println(acc.toString());
		}
	}

BeanListHandler 保存多个数据信息,并且用List集合保存。

总结

我们通过使用数据库连接池的方式简化了数据的连接,通过DButils的方式 简化了数据库的添加,删除,查询, 更新一系列操作,JDBC编程这一方面内容大概就齐全了,以后在写数据库访问层时,用简化的步骤就可以实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值