package demo.dbutilsdemo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ColumnListHandler; import org.apache.commons.dbutils.handlers.KeyedHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; public class dbutilsdemo { @SuppressWarnings("unchecked") public static void main(String[] args) throws ClassNotFoundException { UserField userField = new UserField(); Connection conn = null; String jdbcURL = "jdbc:mysql://localhost:3306/mysqldb"; String jdbcDriver = "com.mysql.jdbc.Driver"; try { DbUtils.loadDriver(jdbcDriver); conn = DriverManager.getConnection(jdbcURL, "root", "root"); conn.setAutoCommit(false); // 关闭自动提交 QueryRunner qRunner = new QueryRunner(); // 以下部分代码采用MapHandler存储方式查询 System.out.println("***Using MapHandler***"); Map map = (Map) qRunner.query(conn, "select * from mc_user_field where id = ?", new MapHandler(), new Object[] { "5" }); System.out.println("id ------------- name "); System.out.println(map.get("id") + " ------------- " + map.get("name")); // 以下部分代码采用MapListHandler存储方式查询 System.out.println("***Using MapListHandler***"); List lMap = (List) qRunner.query(conn, "select * from mc_user_field", new MapListHandler()); System.out.println("id ------------- name "); for (int i = 0; i < lMap.size(); i++) { Map vals = (Map) lMap.get(i); System.out.println(vals.get("id") + " ------------- " + vals.get("name")); } // 以下部分代码采用BeanHandler存储方式查询 System.out.println("***Using BeanHandler***"); userField = (UserField) qRunner.query(conn, "select * from mc_user_field where id = ?", new BeanHandler(Class.forName("cn.lining.test.UserField")), new Object[] { "5" }); System.out.println("id ------------- name "); System.out.println(userField.getId() + " ------------- " + userField.getName()); // 以下部分代码采用BeanListHandler存储方式查询 System.out.println("***Using BeanListHandler***"); List lBean = (List) qRunner.query(conn, "select * from mc_user_field", new BeanListHandler(Class.forName("cn.lining.test.UserField"))); System.out.println("id ------------- name "); for (int i = 0; i < lBean.size(); i++) { userField = (UserField) lBean.get(i); System.out.println(userField.getId() + " ------------- " + userField.getName()); } // 以下部分代码采用ArrayHandler存储方式查询 System.out.println("***Using ArrayHandler***"); Object[] array = (Object[]) qRunner.query(conn, "select * from mc_user_field where id = ?", new ArrayHandler(), new Object[] { "5" }); System.out.println("id ------------- name "); System.out.println(array[0].toString() + " ------------- " + array[1].toString()); // 以下部分代码采用ArrayListHandler存储方式查询 System.out.println("***Using ArrayListHandler***"); List lArray = (List) qRunner.query(conn, "select * from mc_user_field", new ArrayListHandler()); System.out.println("id ------------- name "); for (int i = 0; i < lArray.size(); i++) { Object[] var = (Object[]) lArray.get(i); System.out.println(var[0].toString() + " ------------- " + var[1].toString()); } // 以下部分代码采用ColumnListHandler存储方式查询指定列 System.out.println("***Using ColumnListHandler***"); List lName = (List) qRunner.query(conn, "select * from mc_user_field where id = ?", new ColumnListHandler("name"), new Object[] { "5" }); System.out.println("name "); for (int i = 0; i < lName.size(); i++) { String name = (String) lName.get(i); System.out.println(name); } // 以下部分代码采用ScalarHandler存储方式查询 System.out.println("***Using ScalarHandler***"); String name = (String) qRunner.query(conn, "select * from mc_user_field where id = ?", new ScalarHandler("name"), new Object[] { "5" }); System.out.println("name "); System.out.println(name); // 以下部分代码采用KeyedHandler存储方式查询 System.out.println("***Using KeyedHandler***"); Map
/* * ResultSetHandler 类型 * ArrayHandler:把结果集中的第一行数据转成对象数组。 * ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。 * BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。 * BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。 * ColumnListHandler:将结果集中某一列的数据存放到List中。 * KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。 * MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。 * MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。 * ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。 */
备注:
本文转载自:http://2008ningli.blog.163.com/blog/static/3699023200983102416916/