DBUtils使用总结

2024-04-01 10:08
文章标签 总结 使用 dbutils

本文主要是介绍DBUtils使用总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Apache DBUtils使用总结
2010-01-26 14:33:07
标签: DBUtils  Apache
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://lavasoft.blog.51cto.com/62575/270661
Apache DBUtils使用总结
DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味、最容易出错的一大部分工作。
在使用DBUtils之前,应该注意一些问题:
1、DBUtils是JDBC的简单封装,可以和JDBC混合使用。
2、DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应。
比如:
person表中有个字段叫:address,那么对应的JavaBean的Person类中必须有getAddress和setAddress两个方法,而Person类中可以将address属性命名为add,这是没问题的。
3、DBUtils可以将结果集封装为各种类型,主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>,数组/List<数组>,列/List<列>,这些类型。
对于Map<Map>的类型使用KeyedHandler作为结果集处理器,内层的Map是“列名-值"对,外层的Map是“主键-内层Map的引用”,但此处的主键不一定就是数据库的主键,可以随意指定,比如:
ResultSetHandler h =  new KeyedHandler( "id"); 
Map found = (Map) queryRunner.query( "select id, name, age from person", h); 
Map jane = (Map) found.get( new Long(1));  // jane's id is 1 
String janesName = (String) jane.get( "name"); 
Integer janesAge = (Integer) jane.get( "age");
4、DBUtils执行插入操作的时候,无法返回自增主键,这是一个很严重的问题,当然不能怪DBUtils,可以通过变通的方法来实现,比如在MySQL中,执行完了一个插入SQL后,接着执行SELECT LAST_INSERT_ID()语句,就可以获取到自增主键。
5、DBUtils的性能和JDBC性能是一样,测试过程中没发现性能损失,拥有了很高性能的同时,而不失JDBC的灵活性。
6、对于JavaBean的成员类型定义,有一条原则那就是:尽可能使用包装类型,而不要使用基本类型。很多人不理解为什么,包括我见到一些傻B(,我提出让改为包装类型,他还信誓旦旦的说他的代码多牛多叼),都干好多年了,这个简单的道理还不知道:
//错误
        int a1 = (Integer) null;
        boolean x1 = (Boolean)null;
        //正确
        Integer a2 = (Integer) null;
        Boolean x2 = (Boolean)null;
实际上就是为了保证在查询结果为null的时候,也不会因为给基本类型赋null值而发生错误。
下面给出一个简单例子,作为以后写代码时候有点参考:
环境:
MySQL5.4
JDK1.5
建表SQL:
CREATE  TABLE person ( 
     id  bigint(20)  NOT  NULL AUTO_INCREMENT, 
      name  varchar(24)  DEFAULT  NULL
     age  int(11)  DEFAULT  NULL
     address  varchar(120)  DEFAULT  NULL
      PRIMARY  KEY (id) 
) ENGINE=MyISAM AUTO_INCREMENT=1  DEFAULT CHARSET=gbk
Java代码:
public  class Person { 
         private Long id; 
         private String sdf; 
         private String address2; 
         private Integer age; 

         public Person() { 
        } 

         public Person(String sdf) { 
                 this.sdf = sdf; 
        } 

         public Person(String sdf, Integer age, String address) { 
                 this.sdf = sdf; 
                 this.age = age; 
                 this.address2 = address; 
        } 

         public Long getId() { 
                 return id; 
        } 

         public  void setId(Long id) { 
                 this.id = id; 
        } 

         public String getSdf() { 
                 return sdf; 
        } 

         public  void setSdf(String sdf) { 
                 this.sdf = sdf; 
        } 

         public Integer getAge() { 
                 return age; 
        } 

         public  void setAge(Integer age) { 
                 this.age = age; 
        } 

         public String getAddress() { 
                 return address2; 
        } 

         public  void setAddress(String address2) { 
                 this.address2 = address2; 
        } 
}
测试
package com.lavasoft.dbstu; 

import com.lavasoft.common.DBToolkit; 
import org.apache.commons.dbutils.QueryRunner; 
import org.apache.commons.dbutils.handlers.BeanHandler; 
import org.apache.commons.dbutils.handlers.BeanListHandler; 
import org.apache.commons.dbutils.handlers.MapHandler; 
import org.apache.commons.dbutils.handlers.ScalarHandler; 

import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.List; 
import java.util.Map; 

/** 
* Created by IntelliJ IDEA. 

* @author leizhimin 2010-1-25 21:00:29 
*/
 
public  class PersonDAOImpl  implements PersonDAO { 
         private  static PersonDAOImpl instance =  new PersonDAOImpl(); 

         public  static PersonDAOImpl getInstance() { 
                 return instance; 
        } 

         public  static  void main(String[] args) { 
                 //错误 
                 int a1 = (Integer)  null
                 boolean x1 = (Boolean)  null
                 //正确 
                Integer a2 = (Integer)  null
                Boolean x2 = (Boolean)  null

                getInstance().save( null); 
//                getInstance().save(null); 
//                getInstance().save(null); 
//                getInstance().save(null); 
//                getInstance().save(null); 
                getInstance().update( null); 
                getInstance().load( null); 
                getInstance().load4Map( null); 
        } 

        @Override 
         public Long save(String sql) { 
                Long id =  null
                String ins_sql =  "INSERT INTO person (NAME, age, address) VALUES ('aaa', 21, 'address001')"
                Connection conn = DBToolkit.getConnection(); 
                QueryRunner qr =  new QueryRunner(); 
                 try { 
                        qr.update(conn, ins_sql); 
                         //获取新增记录的自增主键 
                        id = (Long) qr.query(conn,  "SELECT LAST_INSERT_ID()"new ScalarHandler(1)); 
                }  catch (SQLException e) { 
                        e.printStackTrace(); 
                }  finally { 
                        DBToolkit.closeConnection(conn); 
                } 
                 return id; 
        } 

        @Override 
         public  int delete(Long id) { 
                 int x = 0; 
                Connection conn = DBToolkit.getConnection(); 
                QueryRunner qr =  new QueryRunner(); 
                 try { 
                        x = qr.update(conn,  "DELETE FROM person WHERE id = ?", id); 
                }  catch (SQLException e) { 
                        e.printStackTrace(); 
                }  finally { 
                        DBToolkit.closeConnection(conn); 
                } 
                 return x; 
        } 

        @Override 
         public  int update(Person person) { 
                 int x = 0; 
                Connection conn = DBToolkit.getConnection(); 
                QueryRunner qr =  new QueryRunner(); 
                 try { 
                        x = qr.update(conn,  "UPDATE person SET NAME = ?, age = ?, address = ? WHERE id = ?""xxx", 23,  "ttt", 5); 
                }  catch (SQLException e) { 
                        e.printStackTrace(); 
                }  finally { 
                        DBToolkit.closeConnection(conn); 
                } 
                 return x; 

        } 

        @Override 
         public Person load(Long id) { 
                Connection conn = DBToolkit.getConnection(); 
                QueryRunner qr =  new QueryRunner(); 
                 try { 
                        Person person = (Person) qr.query(conn,  "SELECT * FROM person where id = ?"new BeanHandler(Person. class), 3L); 
                        System.out.println(person.getId() +  "/t" + person.getSdf() +  "/t" + person.getAge() +  "/t" + person.getAddress()); 
                }  catch (SQLException e) { 
                        e.printStackTrace(); 
                } 
                 return  null
        } 

        @Override 
         public List<Person> findPerson(String sql) { 
                Connection conn = DBToolkit.getConnection(); 
                QueryRunner qr =  new QueryRunner(); 
                 try { 
                        List<Person> pset = (List) qr.query(conn,  "SELECT * FROM person"new BeanListHandler(Person. class)); 
                         for (Person person : pset) { 
                                System.out.println(person.getId() +  "/t" + person.getSdf() +  "/t" + person.getAge() +  "/t" + person.getAddress()); 
                        } 
                }  catch (SQLException e) { 
                        e.printStackTrace(); 
                } 
                 return  null
        } 

         public Person load4Map(Long id) { 
                Connection conn = DBToolkit.getConnection(); 
                QueryRunner qr =  new QueryRunner(); 
                 try { 
                         //先将两个字段置为null 
                        qr.update(conn,  "update person set age = null,address =null where id =1"); 
                        Map<String, Object> map = qr.query(conn,  "SELECT * FROM person where id = ?"newMapHandler(), 1L); 
                        Person person =  new Person(); 
                        person.setId((Long) map.get( "id")); 
                        person.setSdf((String) map.get( "name")); 
                        person.setAge((Integer) map.get( "age")); 
                        person.setAddress((String) map.get( "address")); 
                        System.out.println(person.getId() +  "/t" + person.getSdf() +  "/t" + person.getAge() +  "/t" + person.getAddress()); 
                }  catch (SQLException e) { 
                        e.printStackTrace(); 
                } 
                 return  null
        } 
}
注意:
从上面的过程看,每个SQL的执行都需要用到QueryRunner,这其实是一个普通的类,非线程安全。在创建这个QueryRunner对象的时候,每次都要new。
QueryRunner对象的创建方式很多,可以通过DateSource,也可以通过Connection来创建。从QueryRunner对象上,可以直接获取到DataSource或者Connection对象。
如果你想看更多例子:
http://jzinfo.javaeye.com/blog/543929

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/270661

 

 

 附件下载:dbutilstest.rar



Dbutil 的使用示例

本文转载:http://2008ningli.blog.163.com/blog/static/3699023200983102416916/

Java代码  收藏代码
  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。


common-utils的使用

默认分类 2009-05-19 11:51:59 阅读294 评论0  字号: 订阅


package cn.lining.test;

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 test {
 @SuppressWarnings("unchecked")
 public static void main(String[] args) throws ClassNotFoundException {

  UserField userField = new UserField();

  Connection conn = null;
  String jdbcURL = "jdbc:mysql://localhost:3306/macaw4";
  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<String, Map> map2 = (Map<String, Map>) qRunner.query(conn,
     "select * from mc_user_field", new KeyedHandler("name"));

   System.out.println("name: field_name2");
   Map vals = (Map) map2.get("field_name2");
   System.out.println(vals.get("id") + "  " + vals.get("name") + "  "
     + vals.get("type"));

   // 以下部分代码插入一条数据
   System.out.println("***Insert begin***");
   userField = new UserField();
   qRunner.update(conn, "insert into mc_user_field ("
     + "id,name,type,sort_order,required,visible)"
     + "values (?,?,?,?,?,?)", new Object[] { userField.getId(),
     userField.getName(), userField.getType(),
     userField.getSort_order(), userField.getRequired(),
     userField.getVisible() });
   System.out.println("***update end***");

   // 以下部分代码更新一条数据
   System.out.println("***update begin***");
   userField = new UserField();
   qRunner.update(conn, "update mc_user_field set "
     + "name = ?,type = ?,sort_order = ?,"
     + "required = ?,visible = ?" + "where id = ?",
     new Object[] { userField.getName(), userField.getType(),
       userField.getSort_order(), userField.getRequired(),
       userField.getVisible(), userField.getId() });
   System.out.println("***update end***");

   // 以下部分代码删除一条数据
   System.out.println("***delete begin***");
   userField = new UserField();
   qRunner.update(conn, "delete from mc_user_field where id2 = ?",
     new Object[] { userField.getId() });
   System.out.println("***delete end***");

  } catch (SQLException ex) {
   ex.printStackTrace();
   try {
    System.out.println("***rollback begin***");
    DbUtils.rollback(conn);
    System.out.println("***rollback end***");
   } catch (SQLException e) {
    e.printStackTrace();
   }
  } finally {
   DbUtils.closeQuietly(conn);
  }

 }
}
/*
 * ArrayHandler:把结果集中的第一行数据转成对象数组。
 * ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
 * BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
 * BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
 * ColumnListHandler:将结果集中某一列的数据存放到List中。
 * KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
 * MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
 * MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
 * ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。
 * 
 */

 

 

 

这篇关于DBUtils使用总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866874

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的