English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
The reason why you can't find the content when executing SQL commands and traversing the result set with JAVAWEB dbutils, and the solution is as follows:
When traversing the result set, only bean objects are traversed to output the first line content (the first line is the output of an instance of the UserEntity class), so re.getRepoTableName() is needed here to call the corresponding content through the object
Auf diese Weise kann der Wert abgerufen werden
PS: Eine detaillierte Erklärung von JavaWeb_DBUtils wie folgt:
Eins: Was ist DBUtils und welche Funktion hat es
DBUtils wurde von der Apache Company geschrieben. DBUtils ist ein praktisches Werkzeug für Datenbankoperationen in Java-Programmierung, klein und einfach zu bedienen.
DBUtils verpackt die JDBC-Operationen und vereinfacht die JDBC-Operationen. Man kann weniger Code schreiben.
1.Für die Leseoperationen auf Datenbanktabellen kann er die Ergebnisse in List, Array, Set und andere Java-Kollektionen umwandeln, was die Programmierung erleichtert;
2.Für die Schreiboperationen auf Datenbanktabellen wird es sehr einfach (es reicht aus, sql-Anweisungen zu schreiben)
3.Man kann Datenquellen, JNDI, Datenbankverbindungspools und andere Technologien verwenden, um die Leistung zu optimieren--Wiederverwendung bereits erstellter Datenbankverbindung
Zwei: Die drei Kernobjekte von DBUtils
2.1、QueryRunner-Klasse
QueryRunner bietet API für die sql-Anweisung Operation. Es gibt hauptsächlich drei Methoden: query() zum Ausführen von select, update() zum Ausführen von insert update delete, batch() Batch-Verarbeitung. Im Folgenden werde ich detailliert die Verwendung dieser Methoden erläutern.
2.2、ResultSetHandler-Schnittstelle
Wird verwendet, um zu definieren, wie Result-Sets nach der select-Operation verpackt werden. Es gibt insgesamt9eine häufig verwendete Implementierungsklasse, ich werde Ihnen detailliert erläutern, wie man sie verwendet.
2.3、DbUtils-Klasse
Es ist ein Werkzeugklasse, die Methoden zur Schließung von Ressourcen und Transaktionsverarbeitung definiert
Drei: Wie verwendet man das DBUtils-Framework
3.1、Verwendungsschritte
Importieren Sie die entsprechenden jar-Pakete
Erstellen Sie ein QueryRunner-Objekt
Verwenden Sie den query-Methoden, um select-Anweisungen auszuführen
Verwenden Sie ResultSetHandler, um Result-Sets zu verpacken
Verwenden Sie die Klasse DbUtils, um Ressourcen freizugeben
3.2、实例
Anmerkung: Ich verwende C3P0-Verbindungspool
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 TestSelect { @Test public void testSelect(){ //Erstellen Sie ein QueryRunner-Objekt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try { // new ResultSetHandler<List<User>> zeigt uns, wie man Result-Sets verpackt List<User> list = qr.query("select * from user", new ResultSetHandler<List<User>>(){ @Override //Nachdem ein query-Statement ein select-Statement ausgeführt hat, wird das Ergebnis in Form eines Rückgabewerts übermittelt public List<User> handle(ResultSet rs) throws SQLException { List<User> list = new ArrayList<User>(); while(rs.next()){ User u = new User(); u.setId(rs.getInt(1)); u.setUsername(rs.getString(2)); u.setPassword(rs.getString(3)); u.setEmail(rs.getString(4)); u.setBirthday(rs.getDate(5)); list.add(u); } return list; } }); for (User user : list) { System.out.println(user); } } catch (SQLException e) { e.printStackTrace(); } } @Test public void testSelect2(){ //Erstellen Sie ein QueryRunner-Objekt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try { //Führt ein SQL-Statement aus und gibt das Ergebnis zurück List<User> list = qr.query("select * from user where id=? und username=?, new BeanListHandler<User>(User.class),1,"tom"); for (User user : list) { System.out.println(user); } } catch (SQLException e) { e.printStackTrace(); } } }
Viertel: Detaillierte Erklärung der drei Kernobjekte von DBUtils
4.1、QueryRunner-Objekt
4.1.1、Konstruktor
new QueryRunner(); Seine Transaktionen können manuell kontrolliert werden.
Das bedeutet, dass der auf diesen Objekt aufgerufene Methoden (z.B. query, update, batch) ein Connection-Objekt im Parameter benötigen.
new QueryRunner(DataSource ds); Seine Transaktionen werden automatisch kontrolliert. Eine SQL-Anweisung, eine Transaktion.
Der auf diesen Objekt aufgerufene Methoden (z.B. query, update, batch) benötigen kein Connection-Objekt.
4.1.2、gebräuchliche Methoden
4.2、ResultSetHandler-Schnittstelle
4.2.1、es hat9Ein Ergebnisverarbeitungsmodul
ArrayHandler: Suitable for1record. Each column value of the record is encapsulated into an array of Object[]
ArrayListHandler: Suitable for retrieving multiple records. Each record's column values are encapsulated into an array of Object[], and the array is encapsulated into a List
ColumnListHandler: Ermittelt die Daten einer bestimmten Spalte. Verpackt in eine Liste.
KeyedHandler: Ermittelt mehrere Zeilen, jede Zeile wird in einen Map verpackt und dieser Map wird wiederum in eine andere Map verpackt, der Schlüssel ist der Wert des angegebenen Felds.
MapHandler: Geeignet für das Abrufen1Zeilen. Die Spaltennamen und -werte des aktuellen Zeilens werden in einen Map gelegt
MapListHandler: Geeignet für das Abrufen mehrerer Zeilen. Jede Zeile wird in einen Map verpackt und dieser Map wird in eine Liste verpackt
ScalarHandler: Geeignet für das Abrufen von Einzeldaten einer Einheit
BeanHandler
BeanListHandler
4.2.2、实例
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.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.ColumnListHandler; import org.apache.commons.dbutils.handlers.KeyedHandler; import org.apache.commons.dbutils.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 TestResultSetHandler { @Test public void test1() { //ArrayHandler: Suitable for1record. Each column value of the record is encapsulated into an array of Object[] QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try { Object[] o = qr.query("select * from user where id=?", new ArrayHandler(),5); for (Object object : o) { System.out.println(object); } } catch (SQLException e) { e.printStackTrace(); } } @Test public void test2() throws SQLException { //ArrayListHandler: Suitable for retrieving multiple records. Each record's column values are encapsulated into an array of Object[], and the array is encapsulated into a List QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); List<Object[]> list = qr.query("select * from user", new ArrayListHandler()); for (Object[] objects : list) { for (Object object : objects) { System.out.println(object); } System.out.println("----------------------"); } } @Test public void test3() throws SQLException { //ColumnListHandler: Geeignet für das Abrufen eines bestimmten Spaltenwerts. Verpackt in eine Liste. QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); List<Object> list = qr.query("select username,password from user ", new ColumnListHandler(1)); for (Object object : list) { System.out.println(object); } } @Test public void test4() throws SQLException { //KeyedHandler: Geeignet für das Abrufen mehrerer Zeilen, jede Zeile wird in einen Map verpackt, //Legen Sie diesen Map dann in einen anderen Map ein, deren Schlüssel der Wert des angegebenen Felds ist. QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); //Der Schlüssel des großen Maps ist ein Spaltenwert der Tabelle, der Schlüssel des kleinen Maps ist der Spaltenname der Tabelle. Daher wird der Schlüssel des großen Maps als Object-Typ und der des kleinen Maps als String verwendet. Map<Object, Map<String, Object>> map = qr.query("select * from user", new KeyedHandler(1)); for (Map.Entry<Object, Map<String, Object>> m : map.entrySet()) { System.out.println(m);//bedeutet id, da "1”. for (Map.Entry<String, Object> mm : m.getValue().entrySet()) { System.out.println(mm);//Abholen der Keys und Values aus dem kleinen Map } System.out.println("--------------------"); } } @Test public void test5() throws SQLException { //MapHandler: Geeignet für das Abrufen1Zeilen. Die Spaltennamen und -werte des aktuellen Zeilens werden in einen Map gelegt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); Map<String, Object> map = qr.query("select * from user", new MapHandler()); for (Map.Entry<String, Object> m : map.entrySet()) { System.out.println(m.getKey())+"\t"+m.getValue()); //Standardmäßig werden die Daten der ersten Zeile abgerufen, um andere Zeilen mit WHERE-Bedingungen zu filtern } } @Test public void test6() throws SQLException { //MapListHandler: Geeignet für das Abrufen mehrerer Zeilen. Jede Zeile wird in einen Map verpackt und dieser Map wird in eine Liste verpackt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); List<Map<String, Object>> list = qr.query("select * from user", new MapListHandler()); for (Map<String, Object> map : list) { for (Map.Entry<String, Object> m : map.entrySet()) { System.out.println(m); } System.out.println("-----------"); } } @Test public void test7() throws SQLException { //ScalarHandler: Geeignet für das Abrufen von Einzeldaten einer Einheit QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); Object o = qr.query("select * from user", new ScalarHandler(2)); System.out.println(o); } @Test public void test8() throws SQLException { //BeanHandler: Geeignet für das Abrufen von Einzeldaten einer Einheit QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); User user = qr.query("select * from user", new BeanHandler<User>(User.class)); System.out.println(user); } }
Fünf, ein Beispiel für ein Hinzufügen, Löschen, Ändern und Suchen mit DBUtils
import static org.junit.Assert.*; import java.sql.SQLException; import java.util.Date; import javax.crypto.spec.OAEPParameterSpec; import org.apache.commons.dbutils.QueryRunner; import org.junit.Test; public class TestInCURD { @Test public void testInsert() { //Erstellen Sie ein QueryRunner-Objekt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try { qr.update("insert into user (username,password,email,birthday)values(",63;,?,?,?)", "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()); try { qr.update("update user set username=",63;,password=",63; where id=4 ", "meizimeizi", "520520"); } catch (SQLException e) { e.printStackTrace(); } } @Test public void testDelete() { //Erstellen Sie ein QueryRunner-Objekt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try { qr.update("delete from user where id=",63; ",}}4); } catch (SQLException e) { e.printStackTrace(); } } @Test public void testBatch() { //Erstellen Sie ein QueryRunner-Objekt QueryRunner qr = new QueryRunner(C3P0Util.getDataSource()); try { Object[][] params = new Object[10]]; //hochdimensionale Variable bedeutet, wie oft ein SQL-Befehl ausgeführt wird for(int i =0;i<params.length;i++){ params[i] =new Object[]{"guapi"+i,"4646","[email protected]",new Date()}); } qr.batch("insert into user (username,password,email,birthday)values(?,?,?,?)", params ); } catch (SQLException e) { e.printStackTrace(); } } }
Zusammenfassung
Die oben genannten sind die von mir vorgestellten Gründe für die Analyse, warum der JavaWeb dbutils-SQL-Befehl und das Durchsuchen des Ergebnissatzes nicht auf Inhalte zugreifen kann. Ich hoffe, dass dies für alle von Nutzen ist. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht, ich werde rechtzeitig antworten. Ich danke auch sehr für die Unterstützung der Anleitung!
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrecht des Urhebers. Der Inhalt wurde von Internetbenutzern freiwillig bereitgestellt und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie Inhalte finden, die möglicherweise urheberrechtlich geschützt sind, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine E-Mail senden, und geben Sie bitte relevante Beweise an. Sobald nachgewiesen wird, dass Inhalte urheberrechtlich geschützt sind, wird diese Website die betreffenden Inhalte sofort löschen.)