Dbutils详解

Common Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。
  补充一下,传统操作数据库的类指的是JDBC(java database connection:java数据库连接,java的数据库操作的基础API。)。
  DBUtils是java编程中的数据库操作实用工具,小巧简单实用,
  特色:
  1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;
  2.对于数据表的写操作,也变得很简单(只需写sql语句)
  3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。
  DBUtils包括3个包:
  org.apache.commons.dbutils
  org.apache.commons.dbutils.handlers
  org.apache.commons.dbutils.wrappers
  DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
  org.apache.commons.dbutils
  DbUtils 关闭链接等操作
  QueryRunner 进行查询的操作
  org.apache.commons.dbutils.handlers
  ArrayHandler :将ResultSet中第一行的数据转化成对象数组
  ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
  BeanHandler :将ResultSet中第一行的数据转化成类对象
  BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
  ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
  KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
  MapHandler :将ResultSet中第一行的数据存成Map映射
  MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
  ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
  org.apache.commons.dbutils.wrappers
  SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值
  StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
  主要方法:
  DbUtils类:启动类
  ResultSetHandler接口:转换类型接口
  MapListHandler类:实现类,把记录转化成List
  BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象
  Qrery Runner类:执行SQL语句的类
  建立三个Java文件
  命名为BeanListExample.java
  Guestbook.java
  MapListExample.java
  源码:
  BeanListExample.java

  Code

import org.apache.commons.dbutils.DbUtils;
  import org.apache.commons.dbutils.QueryRunner;
  import org.apache.commons.dbutils.handlers.BeanListHandler;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.SQLException;
  import java.util.List;
  public class BeanListExample {
  public static void main(String[] args) {
  Connection conn = null;
  String url = "jdbc:mysql://localhost:3306/people";
  String jdbcDriver = "com.mysql.jdbc.Driver";
  String user = "root";
  String password = "hicc";
  DbUtils.loadDriver(jdbcDriver);
  try {
  conn = DriverManager.getConnection(url, user, password);
  QueryRunner qr = new QueryRunner();
  List results = (List) qr.query(conn, "select id,name from guestbook", new BeanListHandler(Guestbook.class));
  for (int i = 0; i < results.size(); i++) {
  Guestbook gb = (Guestbook) results.get(i);
  System.out.println("id:" + gb.getId() + ",name:" + gb.getName());
  }
  } catch (SQLException e) {
  e.printStackTrace();
  } finally {
  DbUtils.closeQuietly(conn);
  }
  }
  }
  Guestbook.java
  Code
  public class Guestbook {
  private Integer id;
  private String name;
  public Integer getId() {
  return id;
  }
  /**get,set方法*/
  }
  MapListExample.java
  Code
  import org.apache.commons.dbutils.DbUtils;
  import org.apache.commons.dbutils.QueryRunner;
  import org.apache.commons.dbutils.handlers.MapListHandler;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.SQLException;
  import java.util.List;
  import java.util.Map;
  public class MapListExample {
  public static void main(String[] args) {
  Connection conn = null;
  String url = "jdbc:mysql://localhost:3306/people";
  String jdbcDriver = "com.mysql.jdbc.Driver";
  String user = "root";
  String password = "hicc";
  DbUtils.loadDriver(jdbcDriver);
  try {
  conn = DriverManager.getConnection(url, user, password);
  QueryRunner qr = new QueryRunner();
  List results = (List) qr.query(conn, "select id,name from guestmessage", new MapListHandler());
  for (int i = 0; i < results.size(); i++) {
  Map map = (Map) results.get(i);
  System.out.println("id:" + map.get("id") + ",name:" + map.get("name"));
  }
  } catch (SQLException e) {
  e.printStackTrace();
  } finally {
  DbUtils.closeQuietly(conn);
  }
  }
  }
  使用组建好需要添加commons-dbutils-1.1.jar和mysql-connector-java-5.1.6-bin.jar两个jar包。
  配置完毕!!!
  //另一种方法
  //使用dbutils1.0版本
  import java.util.*;
  import java.util.logging.*;
  import java.sql.*;
  import org.apache.commons.dbutils.*;
  import org.apache.commons.dbutils.handlers.*;
  public class TestDBUnits {
  public static void main(String[]args) throws Exception {
  TestDBUnits test = new TestDBUnits();
  for(int i = 0 ; i < 1 ; i++) {
  test.testQuery1();
  test.testQuery2();
  test.testUpdate();
  }
  }
  public void testQuery1(){
  try {
  QueryRunner qr = new QueryRunner() ;
  ResultSetHandler rsh = new ArrayListHandler();
  String strsql = "select * from test1";
  ArrayList result = (ArrayList)qr.query(getConnection() ,strsql ,rsh);
  //System.out.print("");
  } catch(Exception ex) {
  ex.printStackTrace(System.out);
  }
  }
  public void testQuery2(){
  try {
  QueryRunner qr = new QueryRunner() ;
  ResultSetHandler rsh = new MapListHandler();
  String strsql = "select * from test1";
  ArrayList result = (ArrayList)qr.query(getConnection() ,strsql ,rsh);
  for(int i = 0 ; i < result.size() ; i++) {
  Map map = (Map)result.get(i);
  //System.out.println(map);
  }
  //System.out.print("");
  } catch(Exception ex) {
  ex.printStackTrace(System.out);
  }
  }
  public void testUpdate(){
  try {
  QueryRunner qr = new QueryRunner() ;
  ResultSetHandler rsh = new ArrayListHandler();
  String strsql = "insert test1(page ,writable ,content)values('ttt','ttt','faskldfjklasdjklfjasdklj')";
  qr.update(getConnection() ,strsql);
  //System.out.print("");
  } catch(Exception ex) {
  ex.printStackTrace(System.out);
  }
  }
  private Connection getConnection() throws InstantiationException,
  IllegalAccessException, ClassNotFoundException, SQLException {
  String strDriver = "org.gjt.mm.mysql.Driver";
  String strUrl = "jdbc:mysql://localhost:3306/test";
  String strUser = "root";
  String strPass = "";
  Class.forName(strDriver).newInstance();
  return DriverManager.getConnection(strUrl, strUser, strPass);
  }
  }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值