La raison pour laquelle Javaweb DButils ne peut pas trouver le contenu lors de l'exécution de la commande SQL et de la traversée du jeu de résultats est la suivante:
Lors de la traversée de l'ensemble de résultats, seul la traversée de l'objet bean ne sortira que la première ligne de contenu (la première ligne est l'objet instancié par la classe d'utilisateur), vous avez donc ici besoin de re.getRepotableName () pour appeler le contenu correspondant via l'objet.
De cette façon, la valeur peut être obtenue
PS: Les DButils de Javaweb sont détaillés comme suit:
1. Que sont les DBUtils et leurs fonctions
DBUTILS est écrit par Apache. DBUTILS est un outil de fonctionnement de la base de données pratique dans la programmation Java, petit, simple et pratique.
DBUTILS résume les opérations sur JDBC, simplifiant les opérations sur JDBC. Vous pouvez écrire moins de code.
1. Pour l'opération de lecture du tableau de données, il peut convertir les résultats en collections Java telles que la liste, le tableau, le set, etc., ce qui est pratique pour les programmeurs;
2. Le fonctionnement d'écriture des tables de données est également très simple (il suffit d'écrire des instructions SQL)
3. Vous pouvez utiliser des sources de données, utiliser le JNDI, la mise en commun de la connexion de la base de données et d'autres technologies pour optimiser les objets de connexion de base de données déjà construits
2. Trois objets principaux de DBUTILS
2.1. Classe de requête
QueryRunner fournit une API pour les instructions SQL de fonctionnement. Il dispose de trois méthodes principales: Query () est utilisée pour exécuter Select, update () est utilisée pour effectuer INSERT UPDATE DELITE, BATCH () est utilisée pour effectuer un traitement par lots. Ce qui suit présentera en détail l'utilisation de ces méthodes.
2.2. Résultats Interface
Il est utilisé pour définir comment encapsuler l'ensemble de résultats après l'opération de sélection. Il a un total de 9 classes d'implémentation couramment utilisées. Je vais présenter en détail comment l'utiliser.
2.3. Classe DBUTILS
Il s'agit d'une classe d'outils qui définit la méthode de fermeture des ressources et du traitement des transactions
3. Comment utiliser le cadre DBUTILS
3.1. Utiliser les étapes
Importer le package JAR correspondant
Créer un objet Queryrunner
Utilisez la méthode de requête pour exécuter l'instruction SELECT
Encapsuler les ensembles de résultats à l'aide de résultats
Utilisez la classe DBUTILS pour publier des ressources
3.2. Exemple
Remarque: j'utilise le pool de connexion 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; org.apache.commons.dbutils.handlers.beanlisthandler; import org.junit.test; import com.jxlg.domain.user; classe publique testSelect {@test public void testSelect () {// crée un objet Queryrunner QueryRunner ();); Essayez {// Nouveaux résultatsThandler <list <utilisateur >> Dites-nous comment encapsuler le jeu de résultats Liste <serv> list = qr.Query ("SELECT * FROM User", Nouveaux résultats en cours de sélection, le résultat est adopté sous la forme d'une liste de retour LIST <utilisateur> Manche (NEWSETSET RS) lance SQEXECTION {Liste <User> Manchefulh ArrayList <Serger>); }}); pour (utilisateur utilisateur: liste) {System.out.println (utilisateur); }} catch (sqlexception e) {e.printStackTrace (); }} @Test public void testSelect2 () {// Créer un objet QueryRunner QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); Essayez {// Exécuter l'instruction SQL et renvoyez la liste de résultats <Derser> list = qr.Query ("SELECT * FROM User Where Id =? et username =?", new Beanlisthandler <User> (user.class), 1, "Tom"); pour (utilisateur utilisateur: liste) {System.out.println (utilisateur); }} catch (sqlexception e) {e.printStackTrace (); }}} 4. Explication détaillée des trois objets principaux de DBUTILS
4.1. Objet Queryrunner
4.1.1. Constructeur
nouveau queryrunner (); Ses transactions peuvent être contrôlées manuellement.
En d'autres termes, il doit y avoir un objet de connexion dans les méthodes (telles que Query, Update, Batch) appelées cet objet.
Nouveau QueryRunner (DataSource DS); Ses transactions sont automatiquement contrôlées. Un SQL et une transaction.
Il n'y a pas d'objet de connexion dans les méthodes (telles que Query, Update, Batch) appelées par cet objet.
4.1.2. Méthodes courantes
4.2. Résultats Interface
4.2.1. Il a 9 processeurs de résultats
Arrayhandler: Convient pour 1 record. Encapsuler chaque colonne de l'enregistrement dans un objet de tableau []
Arraylisthandler: adapté à plusieurs enregistrements. Encapsulez chaque valeur de colonne de chaque enregistrement dans un objet de tableau [] et encapsulez le tableau dans une liste ColumnListhandler: prenez les données d'une certaine colonne. Encapsulé dans la liste.
KeyEdHandler: Prenez plusieurs enregistrements, chaque enregistrement est encapsulé en une seule carte, puis encapsuler cette carte dans une autre carte, et la clé est la valeur de champ spécifiée.
Maphandler: Convient pour 1 record. Mettez le nom de colonne et la valeur de la colonne de l'enregistrement actuel dans une carte mapListhandler: adapté à plusieurs enregistrements. Encapsuler chaque enregistrement dans une carte, puis encapsuler la carte dans une liste Scalarhandler: adapté aux données de haricot à une seule ligne et à colonne unique
Beanlisthandler
4.2.2. Exemple
import static org.junit.assert. *; import java.sql.sqlexception; import java.util.list; import java.util.map; import java.util.map.entry; import org.apache.commons.dbutils.queryrunner; import org.apache.comons.dbutils.handlers.Arayhandler; org.apache.commons.dbutils.handlers.beanhandler; import org.apache.commons.dbutils.handlers.columnlisthandler; import org.apache.commons.dbutiles.handlers.maphandler; import; org.apache.commons.dbutils.handlers.maplisthandler; import org.apache.commons.dbutils.handlers.scalarhandler; import org.junit.test; import com.jxlg.domain.user; public class TestResulTethandler {@test public Void test1 () {//Rayhandler: pose pour 1 record. Encapsulez chaque colonne de la valeur de l'enregistrement dans un objet de tableau [] QueryRunner qr = new queryRunner (c3p0Util.getDataSource ()); essayez {objet [] o = qr.Query ("SELECT * FROM User Where Id =?", New ArrayHandler (), 5); pour (objet objet: o) {System.out.println (objet); }} catch (sqlexception e) {e.printStackTrace (); }} @Test public void test2 () lève sqlexception {// arraylisthandler: adapté à plusieurs enregistrements. Encapsuler chaque colonne de chaque enregistrement dans un objet de tableau [] et encapsuler le tableau dans une liste QueryRunner QR = new queryRunner (c3p0util.getDataSource ()); List <object []> list = qr.query ("select * from user", new ArrayListhandler ()); for (object [] objets: list) {for (objet objet: objets) {system.out.println (objet); } System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- } } @Test public void Test3 () lance SQLEXception {// ColumnListhandler: Obtenez les données d'une certaine colonne. System.out.println (objet);}} @Test Public Void test4 () lance SQLEXception {// KeyEdHandler: prendre plusieurs enregistrements, chaque enregistrement est encapsulé dans une carte, // Package cette carte dans une autre carte, et la clé de la touche. de données dans la table, et la clé de la petite carte est le nom de la colonne de la table, donc la clé de la grande carte utilise le type d'objet et la chaîne est la petite carte. System.out.println (m); // il est id à, car "1" est défini. lance sqlexception {// maphandler: approprié pour 1 enregistrement. Map.Entryset ()) {System.out.println (m.getkey () + "/ t" + m.getValue ()); Remerciation QR = nouveau queryRunner (c3p0Util.getDataSource ()); System.out.println ("-------------");}} @test public void test7 () lance SQLEXception {// ScalarHandler: C3P0Util.gemndatDataSource (); System.out.println (o);} @Test public void test8 () lève SQLEXception {// beanhandler: approprié pour la ligne unique et les données de la colonne unique QR = System.out.println (utilisateur);5. Utilisez des DButils pour faire un exemple d'ajout, de supprimer, de modifier et de rechercher
Importer Static Org.Junit.Asersert. *; Import Java.Sql.Sqlexception; Import Java.util.Date; Importer Javax.Crypto.Spec.oaepparameterspec; Importer org.apache.Commons.dbutils.QueryRunner; Import Org.Junit.Test; Classe publique Testincurd {@Tester Voider Terg.Junit () {Classe publique Testincurd {@Tester Voider Terg. // Créer un objet QueryRunner QueryRunner QR = nouveau queryRunner (c3p0Util.getDataSource ()); essayez {qr.update ("insérer dans l'utilisateur (nom d'utilisateur, mot de passe, e-mail, anniversaire) VALEURS (?, } catch (sqlexception e) {e.printStackTrace (); }} @Test public void TestupDate () {// Créer un objet QueryRunner QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); essayez {qr.update ("Update user set username =?, mot de passe =? où id = 4", "meizimeizi", "520520"); } catch (sqlexception e) {e.printStackTrace (); }} @Test public void testDelete () {// Créer un objet QueryRunner QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); essayez {qr.update ("supprimer de l'utilisateur où id =?", 4); } catch (sqlexception e) {e.printStackTrace (); }} @Test public void testBatch () {// Créer un objet QueryRunner QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); essayez {objet [] [] params = nouvel objet [10] []; // High-Dimensional Représente combien de fois l'instruction SQL est exécutée pour (int i = 0; i <params.length; i ++) {params [i] = nouvel objet [] {"guapi" + i, "4646", "[email protected]", new Date ()}; } qr.batch ("insérer dans l'utilisateur (nom d'utilisateur, mot de passe, e-mail, anniversaire) VALEURS (?,? ,?)", params); } catch (sqlexception e) {e.printStackTrace (); }}} Résumer
Ce qui précède est la raison pour laquelle Javaweb DButils ne peut être trouvé lors de l'exécution des commandes SQL et de la traversée du jeu de résultats. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien à wulin.com!