java基础-DBUtils

Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能

直接使用原生的JDBC接口进行开发,在做查询操作时,返回结果是ResultSet集合;如果需要返回实体类对象时,需要自己写处理方案,将ResultSet转为实体类对象;使用DBUtiles可以直接使用QueryRunner,通过简单的参数配置,快速得到想要的结果。

jar包:commons-dbutils-1.4.jar

1、增删改

不用再关注资源的释放

@Test public void DBUTilsTest() throws SQLException {
	//使用C3P0数据库连接池
    ComboPooledDataSource dataSourve = new ComboPooledDataSource();
    // DBUiles只用于 CRUD操作,连接数据库需要使用其他方式
    QueryRunner queryRunner = new QueryRunner(dataSourve);
    // 新增
    queryRunner.update("insert into stu value(null,?,?)", "xiaoming", 1234);
    // 修改
    queryRunner.update("update stu set name = ? where id = ?", "tom", 13);
    // 删除
    queryRunner.update("delete from stu where id = ?", 15);
}

2、查询

  1. 直接new接口的匿名实现类
Stu stu = queryRunner.query("select * from stu where id = ?", 14, new ResultSetHandler < Stu > () {

    @Override public Stu handle(ResultSet rs) throws SQLException {
        Stu stu = new Stu();
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            stu.setId(id);
            stu.setName(name);
        }
        return stu;
    }
});
System.out.println(stu);
  1. 直接使用框架已经写好的实现类。

查询单个对象

//查询单个对象
Stu stu = queryRunner.query("select * from stu where id = 16", new BeanHandler < Stu > (Stu.class));
System.out.println(stu);

查询多个对象

List < Stu > list = queryRunner.query("select * from stu ", new BeanListHandler < Stu > (Stu.class));

for (Stu stu: list) {
    System.out.println(stu);
}

3、ResultSetHandler 常用的实现类


以下两个是使用频率最高的

  • BeanHandler, 查询到的单个数据封装成一个对象
  • BeanListHandler, 查询到的多个数据封装 成一个List<对象>

  • ArrayHandler, 查询到的单个数据封装成一个数组
  • ArrayListHandler, 查询到的多个数据封装成一个集合 ,集合里面的元素是数组。

  • MapHandler, 查询到的单个数据封装成一个map
  • MapListHandler,查询到的多个数据封装成一个集合 ,集合里面的元素是map。

  • ColumnListHandler:查询一个列
  • KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里
  • ScalarHandler:查询数量count

package com.parddu.dao; import java.io.IOException; import java.sql.*; import java.util.Properties; /** * 数据库功能类 * @author parddu * @version Sep 29, 2010 9:49:31 AM */ class DButil { private String driver=null; //驱动 private String dbName=null; //数据库名 private String host=null; //主机名 private String point=null; //端口 private String userName=null; //登录帐号 private String userPass=null; //登录密码 private static DButil info = null; private DButil(){} /** * 初始化方法,加载数据库连接信息 * @throws IOException */ private static void init() throws IOException{ Properties prop = new Properties(); prop.load(DButil.class.getResourceAsStream("/db_config.properties")); info = new DButil(); info.driver = prop.getProperty("driver"); info.dbName = prop.getProperty("dbName"); info.host = prop.getProperty("host"); info.point = prop.getProperty("point"); info.userName = prop.getProperty("userName"); info.userPass = prop.getProperty("userPass"); } /** * 得到数据库连接对象 * @return 数据库连接对象 */ static Connection getConn(){ Connection conn=null; if(info == null){ try { init(); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } } if(info!=null){ try { Class.forName(info.driver); String url="jdbc:sqlserver://" + info.host + ":" + info.point + ";databaseName=" + info.dbName; conn=DriverManager.getConnection(url,info.userName,info.userPass); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } else{ throw new RuntimeException("读取数据库配置信息异常!"); } return conn; } /** * 关闭查询数据库访问对象 * @param rs 结果集 * @param st 上下文 * @param conn 连接对象 */ static void closeConn(ResultSet rs, Statement st,Connection conn){ try { rs.close(); } catch (Exception e) {} try { st.close(); } catch (Exception e) {} try { conn.close(); } catch (Exception e) {} } /** * 关闭增、删、该数据库访问对象 * @param st 上下文对象 * @param conn 连接对象 */ static void closeConn(Statement st ,Connection conn){ try{ st.close(); conn.close(); }catch(Exception e){} } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值