A razão pela qual os dbutils Javaweb não conseguem encontrar o conteúdo ao executar o comando sql e atravessar o conjunto de resultados é o seguinte:
Ao atravessar o conjunto de resultados, apenas atravessar o objeto Bean produzirá apenas a primeira linha de conteúdo (a primeira linha é o objeto instanciado pela classe UserEntity), então aqui você precisa re.GetRepotableName () para chamar o conteúdo correspondente através do objeto.
Dessa forma, o valor pode ser obtido
PS: Os dbutils de Javaweb são detalhados da seguinte forma:
1. O que são dbutils e suas funções
Dbutils é escrito pelo Apache. O DBUTILS é uma ferramenta de operação de banco de dados prática na programação Java, pequena, simples e prática.
O DBUTILS encapsula operações no JDBC, simplificando operações no JDBC. Você pode escrever menos código.
1. Para a operação de leitura da tabela de dados, ele pode converter os resultados em coleções Java, como LIST, Array, Set etc., que é conveniente para os programadores operarem;
2. A operação de escrita das tabelas de dados também é muito simples (basta escrever instruções SQL)
3. Você pode usar fontes de dados, usar JNDI, pool de conexão de banco de dados e outras tecnologias para otimizar os objetos de conexão de banco de dados de realização de desempenho já construídos
2. Três objetos principais de dbutils
2.1. Classe do Queryrunner
O Queryrunner fornece uma API para operar instruções SQL. Possui três métodos principais: o query () é usado para executar selecionar, update () é usado para executar o inserir update delete, o lote () é usado para executar o processamento em lote. O seguinte apresentará o uso desses métodos em detalhes.
2.2. Resultados da interface
É usado para definir como encapsular o conjunto de resultados após a seleção de operação. Possui um total de 9 classes de implementação comumente usadas. Vou apresentar em detalhes como usá -lo.
2.3. DBUTILS CLASSE
É uma classe de ferramentas que define o método de fechamento de recursos e processamento de transações
3. Como usar a estrutura do DBUTILS
3.1. Use etapas
Importar o pacote JAR correspondente
Crie um objeto quererunner
Use o método de consulta para executar a instrução SELECT
Encapsular os conjuntos de resultados usando os resultados e os resultados
Use a classe Dbutils para liberar recursos
3.2. Exemplo
Nota: estou usando o pool de conexão C3P0
importar java.sql.resultset; importar java.sql.sqLexception; importar java.util.arraylist; importar java.util.list; importar org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.resultshultshrunner; importar; org.apache.commons.dbutils.handlers.beanlistHandler; importar org.junit.test; importar com.jxlg.domain.user; public class TestSelect {@test public void testSelect () {// Create Creyrunner Object QuererRunner QR = NewSelect (); tente {// new ResultsetHandler <list <suser>> Diga -nos como encapsular a lista de resultados do conjunto de resultados <suser> list = qr.Query ("Selecione * do usuário", novo Resultados e List <List <suser>> () {@override // Após a instrução de consulta (Lista de seleção é aprovada na forma de retorno de um valor de retorno <rides> Arraylist <Usuário> () }}); para (usuário do usuário: list) {System.out.println (usuário); }} catch (sqLexception e) {e.printStackTrace (); }} @Test public void testSelect2 () {// Crie um objeto queryrunner queryrunner qr = new Queryrunner (c3p0util.getDataSource ()); tente {// execute a instrução SQL e retorne a lista de resultados <suser> list = qr.Query ("Selecione * do usuário onde id =? e nome de usuário =?", New BeanlistHandler <USUSE> (user.class), 1, "Tom"); para (usuário do usuário: list) {System.out.println (usuário); }} catch (sqLexception e) {e.printStackTrace (); }}} 4. Explicação detalhada dos três objetos principais dos dbutils
4.1. Objeto de Queryrunner
4.1.1. Construtor
novo queryrunner (); Suas transações podem ser controladas manualmente.
Em outras palavras, deve haver um objeto de conexão nos métodos (como consulta, atualização, lote) chamado por este objeto.
novo Queryrunner (DataSource DS); Suas transações são controladas automaticamente. Um SQL e uma transação.
Não existe um objeto de conexão nos métodos (como consulta, atualização, lote) chamado por este objeto.
4.1.2. Métodos comuns
4.2. Resultados da interface
4.2.1. Tem 9 processadores de resultado
ArrayHandler: Adequado para 1 registro. Encapsular cada coluna do registro em um objeto de matriz []
ArraylistHandler: Adequado para vários registros. Encapsular cada valor da coluna de cada registro em um objeto de matriz [] e encapsular a matriz em uma lista columnithandler: pegue os dados de uma determinada coluna. Encapsulado na lista.
KeyEdHandler: Tome vários registros, cada registro é encapsulado em um mapa e encapsula esse mapa em outro mapa, e a chave é o valor do campo especificado.
Maphandler: Adequado para 1 registro. Coloque o nome da coluna e o valor da coluna do registro atual em um mapa maplisthandler: Adequado para vários registros. Encapsular cada registro em um mapa e depois encapsular o mapa em uma lista escalarhandler: adequado para uma única linha e dados de coluna única BeanHandler
BeanlistHandler
4.2.2. Exemplo
importar estático org.junit.assert.*; importar java.sql.sqLexception; importar java.util.list; importar java.util.map; importar java.util.map.InTry; importler orgache.commons.dbutils.QueryRunner; org.apache.commons.dbutils.handlers.beanhandler; importar org.apache.commons.dbutils.handlers.columnlisthandler; importar org.apache.commons.dbutils.handlers.keyedler; org.apache.commons.dbutils.handlers.maplisthandler; importar org.apache.commons.dbutils.handlers.scalarHandler; importar org.junit.test; @TestSest public public public. Encapsular cada coluna do valor do registro em um objeto de matriz [] queryrunner qr = new Queryrunner (c3p0util.getDataSource ()); tente {object [] o = qr.Query ("Selecione * do usuário onde id =?", new ArrayHandler (), 5); for (objeto objeto: o) {System.out.println (object); }} catch (sqLexception e) {e.printStackTrace (); }} @Test public void test2 () lança sqlexception {// ArraylistHandler: Adequado para vários registros. Encapsular cada coluna de cada registro em um objeto de matriz [] e encapsular a matriz em uma lista queryrunner qr = new Queryrunner (c3p0util.getDataSource ()); List <object []> list = qr.Query ("Selecione * do usuário", new ArraylistHandler ()); for (objeto [] objetos: list) {for (objeto objeto: objetos) {System.out.println (objeto); } System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Test3 () lança SQLEXCIONE {// ColumnlistHandler: Obtenha os dados de uma determinada coluna. System.out.println (objeto); de dados na tabela e a chave do pequeno mapa é o nome da coluna da tabela, portanto a chave do mapa grande usa o tipo de objeto e a string é a pequena. System.out.println (m); // é ID para, porque "1" está definido. lança sqlexception {// maphandler: adequado para 1 registro. map.entrySet ()) {System.out.println (m.getKey ()+"/t"+m.getValue ()); O novo queryrunner (C3P0util.getDataSource ()); System.out.println ("-----------"); System.out.println (O); System.out.println (Usuário);5. Use dbutils para fazer um exemplo de adição, exclusão, modificação e pesquisa
importar estático org.junit.assert.*; importar java.sql.sqLexception; importar java.util.date; importar javax.crypto.spec.oaepparameterspec; ung.junit.apache.commons.dbutils.estrunner; import vest.junit.stache.commons.dbutils.terrunner; import.junit.sthest.stache; // Crie um objeto queryrunner queryrunner qr = new Queryrunner (c3p0util.getDataSource ()); tente {qr.update ("Insira no usuário (nome de usuário, senha, e -mail, aniversário) valores (?,?,?)", "Guapi", "4646", "[email protected]", nova data ()); } catch (sqLexception e) {e.printStackTrace (); }} @Test public void testUpDate () {// Crie um objeto queryrunner queryrunner qr = new Queryrunner (c3p0util.getDataSource ()); tente {qr.Update ("User User Set UserName =?, senha =? Onde ID = 4", "Meizimeizi", "520520"); } catch (sqLexception e) {e.printStackTrace (); }} @Test public void testDelete () {// Crie um objeto queryrunner queryrunner qr = new QueryRunner (c3p0util.getDataSource ()); tente {qr.update ("Exclua do usuário onde id =?", 4); } catch (sqLexception e) {e.printStackTrace (); }} @Test public void testBatch () {// Crie um objeto queryrunner queryrunner qr = new QueryRunner (c3p0util.getDataSource ()); tente {object [] [] params = novo objeto [10] []; // High-Dimensional representa quantas vezes a instrução SQL é executada para (int i = 0; i <params.length; i ++) {params [i] = new Object [] {"guapi"+i, "4646", "[email protected]", new Date ()};; } qr.batch ("Insira no usuário (nome de usuário, senha, email, aniversário) valores (?,?,?)", params); } catch (sqLexception e) {e.printStackTrace (); }}} Resumir
O exposto acima é o motivo pelo qual os dbutils javaweb não podem ser encontrados ao executar comandos SQL e atravessar o conjunto de resultados. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao wulin.com!