el aprendizaje de Java dbUtils

DbUtils: Sólo ayuda de EE.UU. código CRUD Simplificar. Crear una conexión de base de datos y el acceso al trabajo, no en su ámbito de trabajo

A, aplicación dbUtils

Descargar ①, dbUtils el archivo JAR

  http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi

②, SQL Server, C3P0, dbUtils entorno a la acumulación (importar el archivo jar apropiado)

  SQL Server: sqljdbc42.jar (controlador JDBC)

  C3P0: c3p0-0.9.5.5.jar, mchange-commons-java-0.2.19.jar, c3p0-config.xml 文件

  DBUtilts: Commons-dbUtils-1.7.jar

  

③, adiciones y supresiones

QueryRunner queryRunner = nuevo QueryRunner ( nuevo ComboPooledDataSource ()); 
    
// 增加 
queryRunner.update ( "inserto en cuenta los valores (null,,)??", "Aa", 1000 ); 
        
// 删除 
queryRunner.update ( "borrar de la cuenta donde id =?", 5 ); 
        
// 更新 
queryRunner.update ( "actualización del conjunto cuenta de dinero = donde id =??", 10000000, 6);

④, la investigación

  1, nueva clase anónima directa que implementa la interfaz ResultSetHandler

pública  vacío testMain () { 
    ComboPooledDataSource dataSource = nueva ComboPooledDataSource (); 

    Corredor QueryRunner = nuevo QueryRunner (dataSource);
    tratar { 
        resultado de la cuenta = runner.query ( "SELECT * FROM cuenta donde id =?", nueva ResultSetHandler <cuenta> () { 
        @ Override 
        pública mango cuenta (ResultSet rs) lanza SQLException { 
            cuenta Cuenta = nueva cuenta ();
             mientras que ( rs.next ()) { 
            account.setId (rs.getInt ( "ID")); 
            account.setName (rs.getString ( "Nombre" )); 
            account.setMoney (rs.getBigDecimal ( "Dinero" )); 
            } 
            Devolver la cuenta; 
        } 
        }, 1 ); 

        System.out.println (result.toString ()); 
    } Catch (SQLException e) { 

        e.printStackTrace (); 
    } 
}

  2, implementado usando el ResultSetHandler clase de interfaz marco

    2.1, para alcanzar la categoría de interfaz ResultSetHandler son:            

       BeanHandler, una sola consulta a los datos encapsulado como un objeto
      BeanListHandler, consultas a una pluralidad de paquete de datos en una lista <Objeto>
      Los dos utilizados con mayor frecuencia
 
 
      ArrayHandler, consulta los datos encapsulados en un único array
      ArrayListHandler, consultas a una pluralidad de paquete de datos en un conjunto, que conjunto de elementos es una matriz

      MapHandler, consulta los datos encapsulados en un único mapa
      MapListHandler, consultas a una pluralidad de paquetes de datos en un conjunto, que son elementos mapa conjunto

      ColumnListHandler
      KeyedHandler
      ScalarHandler (un conde --Seleccionar celular (1) a partir de T_Name)
    2.2, la implementación del código
      2.2.1, una sola consulta de objeto
 
1 QueryRunner queryRunner = nuevo QueryRunner ( nuevo ComboPooledDataSource ());
2  // 查询单个对象
3 cuenta de cuenta = queryRunner.query ( "seleccionar * de cuenta donde id =?" , 
 4                  nuevo  BeanHandler <cuenta> (Cuenta. Clase ), 8);

      2.2.2, las múltiples consulta objetos

1 QueryRunner queryRunner = nuevo QueryRunner ( nuevo ComboPooledDataSource ());
2 Lista <cuenta> list = queryRunner.query ( "SELECT * FROM cuenta" ,
 3                  nueva  haba Lista Handler <cuenta> (cuenta. Clase ));

En segundo lugar, los dbUtils personalizados

Ⅰ, método de actualización

. 1  pública  int Update (SQL String, Object ... args) {
 2      Conexión Conexión = nula ;
 . 3      PreparedStatement PS = nula ;
 . 4      int resultado = 0 ;
 . 5      el try {
 . 6          Conexión = JDBCUtil.getConnection ();
 . 7          PS = Conexión. la prepareStatement (SQL);
 . 8  
9.          ParameterMetaData Una los metadatos = ps.getParameterMetaData ();
 10          // el número de parámetros, el ciclo asignado a los parámetros 
. 11          para ( inti = 0; i <metaData.getParameterCount (); i ++ ) {
 12          ps.setObject (i + 1 , args [i]);
13          }
 14  
15          resultado = ps.executeUpdate ();
16      } catch (SQLException e) {
 17  
18          e.printStackTrace ();
19      } finalmente {
 20  
21      }
 22      de retorno resultado;
23      }

Ⅱ, consulta (query)

 

 1, los resultados de consultas interfaz de usuario

1  // un conjunto de resultados de consulta, a los objetos de tipo de paquete especificado y devuelve una instancia de objeto 
2  público  interfaz ResultSetHandler <T> {
 3.      Mango T (el ResultSet el conjunto de resultados);
 . 4 }

2, consulta general

. 1  pública T de consulta (String SQL, ResultSetHandler <T> Handler, ... args Object) {
 2      Conexión CONEXIÓN = nulo ;
 . 3      la PreparedStatement PS = nulo ;
 . 4      el ResultSet el conjunto de resultados = nulo ;
 . 5      el try {
 . 6          Conexión = JDBCUtil.getConnection () ;
 . 7          PS = Connection.prepareStatement (SQL);
 . 8  
. 9          ParameterMetaData Una los metadatos = ps.getParameterMetaData ();
 10          // el número de parámetros, el ciclo asignado a los parámetros 
11.          para ( int0 = I; I <metaData.getParameterCount (); I ++ ) {
 12 es          ps.setObject (I + 1. , Args [I]);
 13 es          }
 14          // resultado de la consulta establecido 
15          el conjunto de resultados = ps.executeQuery ();
 16          // mango clase de interfaz de invocación de método implementado ResultSetHandler 
17.          retorno handler.handle (el conjunto de resultados);
 18 es      } la captura (SQLException E) {
 19.  
20 es          e.printStackTrace ();
 21 es      } el fin {
 22 es  
23 es      }
 24      de retorno  nulo ;
 25 }

3, llamada personalizada consulta general

1  pública  vacío testMain () {
 2      cuenta Cuenta = CommonCRUDUtils.query ( "SELECT * FROM cuenta donde id =?", Nueva 
3        ResultSetHandler <cuenta> () {
 4  
5          @ Override
 6          pública mango cuenta (ResultSet conjuntoResultados) {
 7          Cuenta = cuenta nueva cuenta ();
 8          try {
 9              si (resultSet.next ()) {
 10                  account.setId (resultSet.getInt ( "ID" ));
 11                  account.setName (ResultSet.getString ( "Nombre" ));
 12                 account.setMoney (resultSet.getBigDecimal ( "Dinero" ));
13                  de retorno de cuenta;
14              }
 15          } catch (SQLException e) {
 16              
17              e.printStackTrace ();
18          }
 19          de retorno  nulo ;
20          }
 21        
22        }, 3 );
23      
24      System.out.println (account.toString ());
25      }

 

Supongo que te gusta

Origin www.cnblogs.com/WarBlog/p/12581955.html
Recomendado
Clasificación