Dbutis

Dbutis

  1. package cn.lining.test;   
  2.   
  3. import java.sql.Connection;   
  4. import java.sql.DriverManager;   
  5. import java.sql.SQLException;   
  6. import java.util.List;   
  7. import java.util.Map;   
  8.   
  9. import org.apache.commons.dbutils.DbUtils;   
  10. import org.apache.commons.dbutils.QueryRunner;   
  11. import org.apache.commons.dbutils.handlers.ArrayHandler;   
  12. import org.apache.commons.dbutils.handlers.ArrayListHandler;   
  13. import org.apache.commons.dbutils.handlers.BeanHandler;   
  14. import org.apache.commons.dbutils.handlers.BeanListHandler;   
  15. import org.apache.commons.dbutils.handlers.ColumnListHandler;   
  16. import org.apache.commons.dbutils.handlers.KeyedHandler;   
  17. import org.apache.commons.dbutils.handlers.MapHandler;   
  18. import org.apache.commons.dbutils.handlers.MapListHandler;   
  19. import org.apache.commons.dbutils.handlers.ScalarHandler;   
  20.   
  21. public class test {   
  22.  @SuppressWarnings("unchecked")   
  23.  public static void main(String[] args) throws ClassNotFoundException {   
  24.   
  25.   UserField userField = new UserField();   
  26.   
  27.   Connection conn = null;   
  28.   String jdbcURL = "jdbc:mysql://localhost:3306/macaw4";   
  29.   String jdbcDriver = "com.mysql.jdbc.Driver";   
  30.   try {   
  31.    DbUtils.loadDriver(jdbcDriver);   
  32.    conn = DriverManager.getConnection(jdbcURL, "root""root");   
  33.    conn.setAutoCommit(false);//关闭自动提交   
  34.    QueryRunner qRunner = new QueryRunner();   
  35.   
  36.    // 以下部分代码采用MapHandler存储方式查询   
  37.    System.out.println("***Using MapHandler***");   
  38.    Map map = (Map) qRunner.query(conn,   
  39.      "select * from mc_user_field where id = ?",   
  40.      new MapHandler(), new Object[] { "5" });   
  41.   
  42.    System.out.println("id ------------- name ");   
  43.    System.out.println(map.get("id") + "  ------------- "  
  44.      + map.get("name"));   
  45.   
  46.    // 以下部分代码采用MapListHandler存储方式查询   
  47.    System.out.println("***Using MapListHandler***");   
  48.    List lMap = (List) qRunner.query(conn,   
  49.      "select * from mc_user_field"new MapListHandler());   
  50.   
  51.    System.out.println("id ------------- name ");   
  52.    for (int i = 0; i < lMap.size(); i++) {   
  53.     Map vals = (Map) lMap.get(i);   
  54.     System.out.println(vals.get("id") + "  ------------- "  
  55.       + vals.get("name"));   
  56.    }   
  57.   
  58.    // 以下部分代码采用BeanHandler存储方式查询   
  59.    System.out.println("***Using BeanHandler***");   
  60.    userField = (UserField) qRunner.query(conn,   
  61.      "select * from mc_user_field where id = ?",   
  62.      new BeanHandler(Class.forName("cn.lining.test.UserField")),   
  63.      new Object[] { "5" });   
  64.    System.out.println("id ------------- name ");   
  65.    System.out.println(userField.getId() + "  ------------- "  
  66.      + userField.getName());   
  67.   
  68.    // 以下部分代码采用BeanListHandler存储方式查询   
  69.    System.out.println("***Using BeanListHandler***");   
  70.    List lBean = (List) qRunner.query(conn,   
  71.      "select * from mc_user_field"new BeanListHandler(Class   
  72.        .forName("cn.lining.test.UserField")));   
  73.    System.out.println("id ------------- name ");   
  74.    for (int i = 0; i < lBean.size(); i++) {   
  75.     userField = (UserField) lBean.get(i);   
  76.     System.out.println(userField.getId() + "  ------------- "  
  77.       + userField.getName());   
  78.    }   
  79.   
  80.    // 以下部分代码采用ArrayHandler存储方式查询   
  81.    System.out.println("***Using ArrayHandler***");   
  82.    Object[] array = (Object[]) qRunner.query(conn,   
  83.      "select * from mc_user_field where id = ?",   
  84.      new ArrayHandler(), new Object[] { "5" });   
  85.   
  86.    System.out.println("id ------------- name ");   
  87.    System.out.println(array[0].toString() + "  ------------- "  
  88.      + array[1].toString());   
  89.   
  90.    // 以下部分代码采用ArrayListHandler存储方式查询   
  91.    System.out.println("***Using ArrayListHandler***");   
  92.    List lArray = (List) qRunner.query(conn,   
  93.      "select * from mc_user_field"new ArrayListHandler());   
  94.    System.out.println("id ------------- name ");   
  95.    for (int i = 0; i < lArray.size(); i++) {   
  96.     Object[] var = (Object[]) lArray.get(i);   
  97.     System.out.println(var[0].toString() + "  ------------- "  
  98.       + var[1].toString());   
  99.    }   
  100.   
  101.    // 以下部分代码采用ColumnListHandler存储方式查询指定列   
  102.    System.out.println("***Using ColumnListHandler***");   
  103.    List lName = (List) qRunner.query(conn,   
  104.      "select * from mc_user_field where id = ?",   
  105.      new ColumnListHandler("name"), new Object[] { "5" });   
  106.    System.out.println("name ");   
  107.    for (int i = 0; i < lName.size(); i++) {   
  108.     String name = (String) lName.get(i);   
  109.     System.out.println(name);   
  110.    }   
  111.   
  112.    // 以下部分代码采用ScalarHandler存储方式查询   
  113.    System.out.println("***Using ScalarHandler***");   
  114.    String name = (String) qRunner.query(conn,   
  115.      "select * from mc_user_field where id = ?",   
  116.      new ScalarHandler("name"), new Object[] { "5" });   
  117.   
  118.    System.out.println("name ");   
  119.    System.out.println(name);   
  120.   
  121.    // 以下部分代码采用KeyedHandler存储方式查询   
  122.    System.out.println("***Using KeyedHandler***");   
  123.    Map<String, Map> map2 = (Map<String, Map>) qRunner.query(conn,   
  124.      "select * from mc_user_field"new KeyedHandler("name"));   
  125.   
  126.    System.out.println("name: field_name2");   
  127.    Map vals = (Map) map2.get("field_name2");   
  128.    System.out.println(vals.get("id") + "  " + vals.get("name") + "  "  
  129.      + vals.get("type"));   
  130.   
  131.    // 以下部分代码插入一条数据   
  132.    System.out.println("***Insert begin***");   
  133.    userField = new UserField();   
  134.    qRunner.update(conn, "insert into mc_user_field ("  
  135.      + "id,name,type,sort_order,required,visible)"  
  136.      + "values (?,?,?,?,?,?)"new Object[] { userField.getId(),   
  137.      userField.getName(), userField.getType(),   
  138.      userField.getSort_order(), userField.getRequired(),   
  139.      userField.getVisible() });   
  140.    System.out.println("***update end***");   
  141.   
  142.    // 以下部分代码更新一条数据   
  143.    System.out.println("***update begin***");   
  144.    userField = new UserField();   
  145.    qRunner.update(conn, "update mc_user_field set "  
  146.      + "name = ?,type = ?,sort_order = ?,"  
  147.      + "required = ?,visible = ?" + "where id = ?",   
  148.      new Object[] { userField.getName(), userField.getType(),   
  149.        userField.getSort_order(), userField.getRequired(),   
  150.        userField.getVisible(), userField.getId() });   
  151.    System.out.println("***update end***");   
  152.   
  153.    // 以下部分代码删除一条数据   
  154.    System.out.println("***delete begin***");   
  155.    userField = new UserField();   
  156.    qRunner.update(conn, "delete from mc_user_field where id2 = ?",   
  157.      new Object[] { userField.getId() });   
  158.    System.out.println("***delete end***");   
  159.   
  160.   } catch (SQLException ex) {   
  161.    ex.printStackTrace();   
  162.    try {   
  163.     System.out.println("***rollback begin***");   
  164.     DbUtils.rollback(conn);   
  165.     System.out.println("***rollback end***");   
  166.    } catch (SQLException e) {   
  167.     e.printStackTrace();   
  168.    }   
  169.   } finally {   
  170.    DbUtils.closeQuietly(conn);   
  171.   }   
  172.   
  173.  }   
  174. }  

 

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

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

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

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

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

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

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

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

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

 

 

 

廖世勇
原文地址:https://www.cnblogs.com/liaoshiyong/p/3150973.html