La razón por la cual Javaweb dButils no puede encontrar el contenido al ejecutar el comando SQL y atravesar el conjunto de resultados es el siguiente:
Al atravesar el conjunto de resultados, solo atravesar el objeto Bean generará solo la primera línea de contenido (la primera línea es el objeto instanciado por la clase de Entrega de usuario), por lo que aquí necesita re.getrepOtableName () para llamar al contenido correspondiente a través del objeto.
De esta manera, el valor se puede obtener
PD: DButils de Javaweb se detalla de la siguiente manera:
1. ¿Qué son los dbutils y sus funciones?
DButils está escrito por Apache. DButils es una herramienta de operación de base de datos práctica en programación Java, pequeña, simple y práctica.
DButils encapsula las operaciones en JDBC, simplificando las operaciones en JDBC. Puedes escribir menos código.
1. Para la operación de lectura de la tabla de datos, puede convertir los resultados en colecciones Java, como lista, matriz, set, etc., que es conveniente para que los programadores funcionen;
2. La operación de escritura de las tablas de datos también es muy simple (solo escriba declaraciones SQL)
3. Puede usar fuentes de datos, usar JNDI, agrupación de conexión de base de datos y otras tecnologías para optimizar los objetos de conexión de base de datos ya construidos.
2. Tres objetos centrales de dButils
2.1. Clase de consulta
QueryRunner proporciona una API para operar declaraciones SQL. Tiene tres métodos principales: Query () se utiliza para ejecutar Select, Update () se utiliza para realizar Insert Update Delete, Batch () se utiliza para realizar el procesamiento por lotes. Lo siguiente introducirá el uso de estos métodos en detalle.
2.2. Resultados de la interfaz de Ethandler
Se utiliza para definir cómo encapsular el conjunto de resultados después de la operación de selección. Tiene un total de 9 clases de implementación comúnmente utilizadas. Presentaré en detalle cómo usarlo.
2.3. Clase de dbutils
Es una clase de herramientas que define el método de cierre de recursos y procesamiento de transacciones
3. Cómo usar el marco DButils
3.1. Usar pasos
Importar el paquete jar correspondiente
Crear un objeto de consultación
Use el método de consulta para ejecutar la instrucción SELECT
Conjuntos de resultados encapsulados utilizando resultados
Use la clase DButils para liberar recursos
3.2. Ejemplo
Nota: Estoy usando el grupo de conexión C3P0
import java.sql.ResultSet; import java.sql.sqlexception; import java.util.arrayList; import java.util.list; import org.apache.commons.dbutils.Queryrunner; import org.apache.commons.dbutils.Resultsethandler; import org.apache.commons.dbutils.handlers.beanlisthandler; import org.junit.test; import com.jxlg.domain.user; public class testelect {@test public void testelect () {// crea un objeto de consultyrunner QrRunner qr = nuevo queryrunner (c3p0Util.getDatAtatAtatAsET Pruebe {// New ResultSethandler <List <Serem <serem>> Díganos cómo encapsular la lista SET de resultados <serem> list = qr.query ("Seleccionar * del usuario", New ResultSethandler <List <serem> () {@Override // después de la declaración de consulta ejecuta la declaración de selección, el resultado se aprueba en el formulario de un valor público de retorno <User> Handle> Handle (ResultSet RS) Stors Sqlex Sqlexs SQECTECTIONS SQECT. ArrayList <Serve> (); } Lista de retorno; for (usuario de usuario: list) {system.out.println (usuario); }} Catch (SQLException e) {E.PrintStackTrace (); }} @Test public void testSelect2 () {// Cree un objeto QUERYRUNNER QR = new QueryRunner (c3p0util.getDataSource ()); Pruebe {// Ejecute la instrucción SQL y devuelva la lista de resultados <Serem> List = Qr.query ("Seleccione * de usuario donde id =? y UserName =?", New Beanlisthandler <Ser Usem> (User.class), 1, "Tom"); for (usuario de usuario: list) {system.out.println (usuario); }} Catch (SQLException e) {E.PrintStackTrace (); }}} 4. Explicación detallada de los tres objetos centrales de Dbutils
4.1. Objeto de consultora
4.1.1. Constructor
nuevo QueryRunner (); Sus transacciones se pueden controlar manualmente.
En otras palabras, debe haber un objeto de conexión en los métodos (como consulta, actualización, lote) llamado por este objeto.
nuevo QueryRunner (DataSource DS); Sus transacciones se controlan automáticamente. Una transacción SQL y una.
No hay objeto de conexión en los métodos (como consulta, actualización, lote) llamado por este objeto.
4.1.2. Métodos comunes
4.2. Resultados de la interfaz de Ethandler
4.2.1. Tiene 9 procesadores de resultados
ArrayHandler: adecuado para 1 registro. Encapsula cada columna del registro en un objeto de matriz []
Arraylisthandler: adecuado para múltiples registros. Encapsule cada valor de columna de cada registro en un objeto de matriz [], y encapsule la matriz en una lista de columna Listhandler: tome los datos de una determinada columna. Encapsulado en la lista.
KeyEdHandler: tome múltiples registros, cada registro se encapsula en un mapa y luego encapsula este mapa en otro mapa, y la clave es el valor de campo especificado.
Maphandler: adecuado para 1 récord. Coloque el nombre de la columna y el valor de la columna del registro actual en un mapa Maplisthandler: adecuado para múltiples registros. Encapsular cada registro en un mapa y luego encapsular el mapa en una lista ScalarHandler: Adecuado para datos de datos de una sola fila y columna de una sola columna
Beanlisthandler
4.2.2. Ejemplo
import static org.junit.assert.*; import java.sql.sqlexception; import java.util.list; import java.util.map; import java.util.map.entry; importar org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers. org.apache.commons.dbutils.handlers.beanhandler; importar org.apache.commons.dbutils.handlers.columnlisthandler; importar org.apache.commons.dbutils.handlers.keyedhandler; import org.apache.commons.dbutils.handlers.maphandler; importar; import org.apache.commons.dbutils.handlers.maplisthandler; importar org.apache.commons.dbutils.handlers.scalarhandler; import org.junit.test; import com.jxlg.domain.user; public class testResultsethandler {@Test public void Void Void () {//CrassHandler. Encapsula cada columna del valor del registro en un objeto de matriz [] QURUNNER QR = New QueryRunner (C3P0UTIl.GetDataSource ()); Pruebe {objeto [] o = qr.query ("Seleccione * del usuario donde id =?", New ArrayHandler (), 5); for (objeto objeto: o) {system.out.println (objeto); }} Catch (SQLException e) {E.PrintStackTrace (); }} @Test public void test2 () lanza SQLException {// ArrayListTandler: adecuado para múltiples registros. Encapsula cada columna de cada registro en un objeto de matriz [] y encapsula la matriz en una lista QURYRUNNER QR = New QueryRunner (C3P0UTIL.GetDataSource ()); List <Object []> list = Qr.query ("Seleccionar * del usuario", new ArrayListHandler ()); for (objeto [] objetos: list) {for (objeto objeto: objetos) {System.out.println (objeto); } System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } } @Test public void test3 () lanza SQLException {// columnlisthandler: obtenga los datos de una determinada columna. System.out.println (objeto); Datos en la tabla, y la clave del mapa pequeño es el nombre de la columna de la tabla, por lo que la clave del mapa grande usa el tipo de objeto y la cadena es el mapa pequeño <objeto, map <string, objeto >> map = qr.query ("select * from user", new KeyEdHandler (1)); id a, porque "1" está configurado. Adecuado para 1 registro. System.out.println (M.GetKey ()+"/t"+M.GetValue ()); Quera (c3p0util.getDataSource ()); System.out.println ("------------"); System.out.println (o); System.out.println (usuario);5. Use dbutils para dar un ejemplo de agregar, eliminar, modificar y buscar
import static org.junit.assert.*; import java.sql.sqlexception; import java.util.date; import javax.crrypto.spec.oaePepeParameterspec; importar org.apache.commons.dbutils.Queryrunner; import org.junit.test; public class testinCurd {@TiS // Cree un objeto de QUERYRUNNER QR = New QueryRunner (C3P0UTIl.GetDataSource ()); Pruebe {Qr.Update ("Inserte en el usuario (nombre de usuario, contraseña, correo electrónico, cumpleaños) Valores (?,?,?,?)", "guapi", "4646", "[email protected]", nueva fecha ())); } Catch (Sqlexception e) {E.PrintStackTrace (); }} @Test public void topDate () {// Cree un objeto QUERYRUNNER QR = new QueryRunner (c3p0util.getDataSource ()); Pruebe {Qr.Update ("Actualizar el usuario establecido UserName =?, contraseña =? Where id = 4", "Meizeizi", "520520"); } Catch (Sqlexception e) {E.PrintStackTrace (); }} @Test public void testDelete () {// Cree un objeto QUERYRUNNER QR = new QueryRunner (c3p0util.getDataSource ()); intente {qr.Update ("Eliminar del usuario donde id =?", 4); } Catch (Sqlexception e) {E.PrintStackTrace (); }} @Test public void testBatch () {// Cree un objeto QUERYRUNNER QR = nuevo QUERYRUNNER (C3P0UTIL.GetDataSource ()); intente {objeto [] [] params = nuevo objeto [10] []; // High-dimensional representa cuántas veces se ejecuta la instrucción SQL para (int i = 0; i <params.length; i ++) {params [i] = nuevo objeto [] {"guapi"+i, "4646", "[email protected]", nueva fecha ()}; } Qr.batch ("Inserte en el usuario (nombre de usuario, contraseña, correo electrónico, cumpleaños) valores (?,?,?,?)", params); } Catch (Sqlexception e) {E.PrintStackTrace (); }}} Resumir
Lo anterior es la razón por la cual no se pueden encontrar Javaweb dButils al ejecutar comandos SQL y atravesar el conjunto de resultados. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo a wulin.com!