词条 | 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); } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。