Dbutis

  1. package cn.lining.test;        


  2. import java.sql.Connection;        

  3. import java.sql.DriverManager;        

  4. import java.sql.SQLException;        

  5. import java.util.List;        

  6. import java.util.Map;        


  7. import org.apache.commons.dbutils.DbUtils;        

  8. import org.apache.commons.dbutils.QueryRunner;        

  9. import org.apache.commons.dbutils.handlers.ArrayHandler;        

  10. import org.apache.commons.dbutils.handlers.ArrayListHandler;        

  11. import org.apache.commons.dbutils.handlers.BeanHandler;        

  12. import org.apache.commons.dbutils.handlers.BeanListHandler;        

  13. import org.apache.commons.dbutils.handlers.ColumnListHandler;        

  14. import org.apache.commons.dbutils.handlers.KeyedHandler;        

  15. import org.apache.commons.dbutils.handlers.MapHandler;        

  16. import org.apache.commons.dbutils.handlers.MapListHandler;        

  17. import org.apache.commons.dbutils.handlers.ScalarHandler;        


  18. publicclass test {    

  19. @SuppressWarnings("unchecked")        

  20. publicstaticvoid main(String[] args) throws ClassNotFoundException {        


  21.  UserField userField = new UserField();    


  22.  Connection conn = null;    

  23.  String jdbcURL = "jdbc:mysql://localhost:3306/macaw4";        

  24.  String jdbcDriver = "com.mysql.jdbc.Driver";    

  25. try {    

  26.   DbUtils.loadDriver(jdbcDriver);        

  27.   conn = DriverManager.getConnection(jdbcURL, "root", "root");        

  28.   conn.setAutoCommit(false);//关闭自动提交

  29.   QueryRunner qRunner = new QueryRunner();    


  30. // 以下部分代码采用MapHandler存储方式查询

  31.   System.out.println("***Using MapHandler***");        

  32.   Map map = (Map) qRunner.query(conn,        

  33. "select * from mc_user_field where id = ?",        

  34. new MapHandler(), new Object[] { "5" });    


  35.   System.out.println("id ------------- name ");        

  36.   System.out.println(map.get("id") + "  ------------- "

  37.     + map.get("name"));    


  38. // 以下部分代码采用MapListHandler存储方式查询

  39.   System.out.println("***Using MapListHandler***");        

  40.   List lMap = (List) qRunner.query(conn,        

  41. "select * from mc_user_field", new MapListHandler());    


  42.   System.out.println("id ------------- name ");        

  43. for (int i = 0; i < lMap.size(); i++) {        

  44.    Map vals = (Map) lMap.get(i);        

  45.    System.out.println(vals.get("id") + "  ------------- "

  46.      + vals.get("name"));    

  47.   }        


  48. // 以下部分代码采用BeanHandler存储方式查询

  49.   System.out.println("***Using BeanHandler***");        

  50.   userField = (UserField) qRunner.query(conn,        

  51. "select * from mc_user_field where id = ?",        

  52. new BeanHandler(Class.forName("cn.lining.test.UserField")),        

  53. new Object[] { "5" });    

  54.   System.out.println("id ------------- name ");        

  55.   System.out.println(userField.getId() + "  ------------- "

  56.     + userField.getName());        


  57. // 以下部分代码采用BeanListHandler存储方式查询

  58.   System.out.println("***Using BeanListHandler***");        

  59.   List lBean = (List) qRunner.query(conn,        

  60. "select * from mc_user_field", new BeanListHandler(Class        

  61.       .forName("cn.lining.test.UserField")));        

  62.   System.out.println("id ------------- name ");        

  63. for (int i = 0; i < lBean.size(); i++) {        

  64.    userField = (UserField) lBean.get(i);        

  65.    System.out.println(userField.getId() + "  ------------- "

  66.      + userField.getName());        

  67.   }        


  68. // 以下部分代码采用ArrayHandler存储方式查询

  69.   System.out.println("***Using ArrayHandler***");        

  70.   Object[] array = (Object[]) qRunner.query(conn,        

  71. "select * from mc_user_field where id = ?",        

  72. new ArrayHandler(), new Object[] { "5" });    


  73.   System.out.println("id ------------- name ");        

  74.   System.out.println(array[0].toString() + "  ------------- "

  75.     + array[1].toString());    


  76. // 以下部分代码采用ArrayListHandler存储方式查询

  77.   System.out.println("***Using ArrayListHandler***");        

  78.   List lArray = (List) qRunner.query(conn,        

  79. "select * from mc_user_field", new ArrayListHandler());        

  80.   System.out.println("id ------------- name ");        

  81. for (int i = 0; i < lArray.size(); i++) {        

  82.    Object[] var = (Object[]) lArray.get(i);        

  83.    System.out.println(var[0].toString() + "  ------------- "

  84.      + var[1].toString());    

  85.   }        


  86. // 以下部分代码采用ColumnListHandler存储方式查询指定列

  87.   System.out.println("***Using ColumnListHandler***");        

  88.   List lName = (List) qRunner.query(conn,        

  89. "select * from mc_user_field where id = ?",        

  90. new ColumnListHandler("name"), new Object[] { "5" });    

  91.   System.out.println("name ");    

  92. for (int i = 0; i < lName.size(); i++) {        

  93.    String name = (String) lName.get(i);        

  94.    System.out.println(name);        

  95.   }        


  96. // 以下部分代码采用ScalarHandler存储方式查询

  97.   System.out.println("***Using ScalarHandler***");        

  98.   String name = (String) qRunner.query(conn,        

  99. "select * from mc_user_field where id = ?",        

  100. new ScalarHandler("name"), new Object[] { "5" });    


  101.   System.out.println("name ");    

  102.   System.out.println(name);        


  103. // 以下部分代码采用KeyedHandler存储方式查询

  104.   System.out.println("***Using KeyedHandler***");        

  105.   Map<String, Map> map2 = (Map<String, Map>) qRunner.query(conn,        

  106. "select * from mc_user_field", new KeyedHandler("name"));    


  107.   System.out.println("name: field_name2");        

  108.   Map vals = (Map) map2.get("field_name2");    

  109.   System.out.println(vals.get("id") + "  " + vals.get("name") + "  "

  110.     + vals.get("type"));    


  111. // 以下部分代码插入一条数据

  112.   System.out.println("***Insert begin***");        

  113.   userField = new UserField();    

  114.   qRunner.update(conn, "insert into mc_user_field ("

  115.     + "id,name,type,sort_order,required,visible)"

  116.     + "values (?,?,?,?,?,?)", new Object[] { userField.getId(),        

  117.     userField.getName(), userField.getType(),        

  118.     userField.getSort_order(), userField.getRequired(),        

  119.     userField.getVisible() });        

  120.   System.out.println("***update end***");        


  121. // 以下部分代码更新一条数据

  122.   System.out.println("***update begin***");        

  123.   userField = new UserField();    

  124.   qRunner.update(conn, "update mc_user_field set "

  125.     + "name = ?,type = ?,sort_order = ?,"

  126.     + "required = ?,visible = ?" + "where id = ?",        

  127. new Object[] { userField.getName(), userField.getType(),        

  128.       userField.getSort_order(), userField.getRequired(),        

  129.       userField.getVisible(), userField.getId() });        

  130.   System.out.println("***update end***");        


  131. // 以下部分代码删除一条数据

  132.   System.out.println("***delete begin***");        

  133.   userField = new UserField();    

  134.   qRunner.update(conn, "delete from mc_user_field where id2 = ?",        

  135. new Object[] { userField.getId() });        

  136.   System.out.println("***delete end***");        


  137.  } catch (SQLException ex) {        

  138.   ex.printStackTrace();        

  139. try {    

  140.    System.out.println("***rollback begin***");        

  141.    DbUtils.rollback(conn);        

  142.    System.out.println("***rollback end***");        

  143.   } catch (SQLException e) {        

  144.    e.printStackTrace();        

  145.   }        

  146.  } finally {    

  147.   DbUtils.closeQuietly(conn);        

  148.  }        


  149. }        

  150. }  


 ArrayHandler:把结果集中的第一行数据转成对象数组。

 ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。

 BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

 BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。

 ColumnListHandler:将结果集中某一列的数据存放到List中。

  KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。

  MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。

  MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。

  ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。






你可能感兴趣的:(Dbutis)