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:
BeanListHandler, consultas a una pluralidad de paquete de datos en una lista <Objeto>
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)
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 }