Der Grund, warum Javaweb DButils den Inhalt bei der Ausführung des SQL -Befehls und der Durchführung des Ergebnissatzes nicht finden kann, lautet wie folgt:
Wenn Sie das Ergebnissatz durchqueren, gibt es beim Durchqueren des Bean -Objekts nur die erste Inhaltslinie aus (die erste Zeile ist das von der Benutzerentitätsklasse instanziierte Objekt). Hier müssen Sie hier re.getRepotableName () den entsprechenden Inhalt über das Objekt aufrufen.
Auf diese Weise kann der Wert erhalten werden
PS: Javawebs DButils ist wie folgt beschrieben:
1. Was sind DButils und ihre Funktionen?
DButils wird von Apache geschrieben. DBUTILS ist ein praktisches Datenbankbetriebstool in der Java -Programmierung, klein, einfach und praktisch.
DBUTILs verkapselt Operationen auf JDBC und vereinfacht die Operationen auf JDBC. Sie können weniger Code schreiben.
1. Für den Vorgang der Datentabelle kann die Ergebnisse in Java -Sammlungen wie List, Array, Set usw. umwandeln, was für Programmierer geeignet ist.
2. Der Schreibbetrieb von Datentabellen ist ebenfalls sehr einfach (schreiben Sie einfach SQL -Anweisungen)
3.. Sie können Datenquellen verwenden, JNDI, Datenbankverbindungspooling und andere Technologien verwenden, um die bereits erstellten Datenbankverbindungsobjekte zu optimieren
2. Drei Kernobjekte von DButils
2.1. QueryRunner -Klasse
QueryRunner bietet eine API für den Betrieb von SQL -Anweisungen. Es verfügt über drei Hauptmethoden: Query () wird zum Ausführen von Select verwendet, update () wird verwendet, um ein Einfügen von Update zu löschen. Batch () wird zur Durchführung der Stapelverarbeitung verwendet. Im Folgenden wird die Verwendung dieser Methoden im Detail eingebracht.
2.2. ResultSthandler -Schnittstelle
Es wird verwendet, um zu definieren, wie das Ergebnis nach dem SELECT -Operation eingekapselt wird. Es hat insgesamt 9 häufig verwendete Implementierungsklassen. Ich werde ausführlich, wie man es verwendet.
2.3. DBUTILS -Klasse
Es ist eine Werkzeugklasse, die die Methode zum Schließen von Ressourcen und der Transaktionsverarbeitung definiert
3.. So verwenden Sie das DBUTILS -Framework
3.1. Schritte verwenden
Importieren Sie das entsprechende JAR -Paket
Erstellen Sie ein QueryRunner -Objekt
Verwenden Sie die Abfragemethode, um die Auswahlanweisung auszuführen
Kapsel
Verwenden Sie die DBUTILS -Klasse, um Ressourcen zu veröffentlichen
3.2. Beispiel
Hinweis: Ich verwende den C3P0 -Verbindungspool
Importieren Sie java.sql.resultset; import java.sql.sqlexception; import java.util.arraylist; import java.util.list; import org.apache.commons.dbutils.queryrunner; org.apache.commons.dbutils.handlers.BeanListHandler;import org.junit.Test;import com.jxlg.domain.User;public class TestSelect { @Test public void testSelect(){ //Create a QueryRunner object QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); Versuchen Sie {// Neue resultStHandler <LIST <Benutzer >> Sagen Sie uns, wie Sie die Ergebnis -Set -Liste <Benutzer> list = qr.Query inkapituliert ("aus dem Benutzer auswählen", neue resultStHander <liste <Benutzer >> () {@Override // Nach der Abfrageanweisung Auswählen die Auswahl der Auswahl der Auswahl. ArrayList <Beering> (); }}); für (Benutzer Benutzer: Liste) {System.out.println (Benutzer); }} catch (sqlexception e) {e.printstacktrace (); }} @Test public void testSelect2 () {// Erstellen eines QueryRunner -Objekts QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); Versuchen Sie {// Führen Sie die SQL -Anweisung aus und geben Sie die Ergebnisliste <Benutzer> list = qr.Query ("SELECT * Vom Benutzer aus, wobei ID =? und username =?", New BeanlIStHandler <Bener> (user.class), 1, "Tom"). für (Benutzer Benutzer: Liste) {System.out.println (Benutzer); }} catch (sqlexception e) {e.printstacktrace (); }}} 4. Detaillierte Erklärung der drei Kernobjekte von DBUTILs
4.1. QueryRunner -Objekt
4.1.1. Konstruktor
neuer QueryRunner (); Seine Transaktionen können manuell kontrolliert werden.
Mit anderen Worten, es muss ein Verbindungsobjekt in den Methoden (z. B. Abfrage, Aktualisierung, Batch) geben, das von diesem Objekt aufgerufen wird.
neuer QueryRunner (DataSource DS); Die Transaktionen werden automatisch gesteuert. Eine SQL und eine Transaktion.
In den Methoden (z. B. Abfrage, Update, Batch) gibt es kein Verbindungsobjekt, das von diesem Objekt aufgerufen wird.
4.1.2. Gemeinsame Methoden
4.2. ResultSthandler -Schnittstelle
4.2.1. Es hat 9 Ergebnisprozessoren
ArrayHandler: Geeignet für 1 Rekord. Kapitulieren Sie jede Spalte des Datensatzes in ein Array -Objekt []
ArrayLIStHandler: Geeignet für mehrere Datensätze. Kapitulieren Sie jeden Spaltenwert jedes Datensatzes in ein Array -Objekt [] und einkapseln Sie das Array in eine Listen -Spaltenhandler: Nehmen Sie die Daten einer bestimmten Spalte. In die Liste eingekapselt.
KeyedHandler: Nehmen Sie mehrere Datensätze, jeder Datensatz wird in eine Karte eingekapselt und dann diese Karte in eine andere Karte einkapituliert, und der Schlüssel ist der angegebene Feldwert.
Maphandler: Geeignet für 1 Rekord. Legen Sie den Spaltennamen und den Spaltenwert des aktuellen Datensatzes in eine Karte Maplisthandler: Geeignet für mehrere Datensätze. Kapitulieren Sie jeden Datensatz in eine Karte und verkapulieren Sie die Karte dann in eine Liste ScalarHandler: Geeignet für einzelne Zeilen- und einzelne Spaltendaten -Datenbeanhandler
Beanlisthandler
4.2.2. Beispiel
Import static org.junit.assert. org.apache.commons.dbutils.handlers.beanHandler; import org.apache.commons.dbutils.handlers.columnlistHandler; import org.apache.commons.dbutils.handlers.KeyedHandler; Import org. org.apache.commons.dbutils.handlers.maplistHandler; import org.apache.commons.dbutils.handlers.scalarHandler; Kapitulieren Sie jede Spalte des Wertes des Datensatzes in ein Array -Objekt [] queryRunner qr = new queryRunner (c3p0util.getDataSource ()); Versuchen Sie {Object [] o = qr.query ("SELECT * VON UNSER, WO ID ID =?", New ArrayHandler (), 5); für (Objektobjekt: o) {System.out.println (Objekt); }} catch (sqlexception e) {e.printstacktrace (); }} @Test public void test2 () löst SQLEXception {// ArrayLIStHandaller: Geeignet für mehrere Datensätze. Kapitulieren Sie jede Spalte jedes Datensatzes in ein Array -Objekt [] und einkapseln Sie das Array in eine Liste QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); List <Object []> list = qr.query ("aus dem Benutzer auswählen", New ArrayListHandler ()); für (Object [] Objekte: Liste) {für (Objektobjekt: Objekte) {System.out.println (Object); } System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- test3 () löscht sqlexception {// columnlistHandler: Die Daten einer bestimmten Spalte abrufen. System.out.println (Objekt); Daten in der Tabelle und der Schlüssel der kleinen Karte ist der Spaltenname der Tabelle, so Id an, weil "1" gesetzt ist. Geeignet für 1 Datensatz. System.out.println (M.Getkey ()+"/t"+M.GetValue ()); QueryRunner (c3p0util.getDataSource ()); System.out.println ("-------------"); System.out.println (O); System.out.println (Benutzer);5. Verwenden Sie DBUTILs, um ein Beispiel für das Hinzufügen, Löschen, Ändern und Suchen zu geben
statische org.junit.assert. // Erstellen Sie ein QueryRunner -Objekt QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); Versuchen Sie {qr.update ("In den Benutzer einfügen (Benutzername, Passwort, E -Mail, Geburtstag) Werte (?,?,?,?)", "Guapi", "4646", "[email protected]", New Date ()); } catch (sqlexception e) {e.printstacktrace (); }} @Test public void testupdate () {// Erstellen Sie ein QueryRunner -Objekt queryRunner qr = new queryRunner (c3p0util.getDataSource ()); Versuchen Sie {qr.update ("Benutzer aktualisieren username =?, password =? WO ID = 4", "Meizimeizi", "520520"); } catch (sqlexception e) {e.printstacktrace (); }} @Test public void testDelete () {// Erstellen eines QueryRunner -Objekts QueryRunner qr = new queryRunner (c3p0util.getDataSource ()); Versuchen Sie {qr.update ("vom Benutzer löschen Where ID =?", 4); } catch (sqlexception e) {e.printstacktrace (); }} @Test public void testbatch () {// Erstellen eines QueryRunner -Objekts queryRunner qr = new queryRunner (c3p0util.getDataSource ()); try {Object [] [] params = new Object [10] []; // Hochdimensional repräsentiert, wie oft die SQL-Anweisung ausgeführt wird (int i = 0; i <param.length; i ++) {params [i] = new Object [] {"Guapi"+i, "4646", "[email protected]", New Date ()}; } qr.batch ("In den Benutzer einfügen (Benutzername, Passwort, E -Mail, Geburtstag) Werte (?,?,?,?)", Params); } catch (sqlexception e) {e.printstacktrace (); }}} Zusammenfassen
Das obige ist der Grund, warum Javaweb -DButils bei der Ausführung von SQL -Befehlen und dem Durchqueren des Ergebnissatzes nicht gefunden werden können. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung bei Wulin.com!