Datensatzeinschränkung in JdbcTemplate

Presler

Mitglied
Wie kann ich mit JdbcTemplate eine Datenabfrage eingrenzen?
Die Funktion setMaxRows( x ) von JdbcTemplate grenzt zwar die Anzahl der Datensätze ein. Aber setFetchRow( x ) scheint keinen Effekt zu zeigen. Lt.

JdbcTemplate (Spring Framework API 2.0))

und

Statement (Java 2 Platform SE 5.0)

müsste ja gelten

0 <= setFetchRow( a ) <= setMaxRows( b )

also sql = ".... LIMIT a, b"

Benutze ich aber

Code:
                     DriverManagerDataSource ds = new DriverManagerDataSource();

	       ds.setUsername("root");
	       ds.setPassword("");
	       ds.setDriverClassName("com.mysql.jdbc.Driver");
	       ds.setUrl("jdbc:mysql://localhost/proconf");
	       
	       JdbcTemplate jdbc = new JdbcTemplate( ds );

	       jdbc.setFetchSize( 3 );
	       jdbc.setMaxRows( 2 );
	       
	       System.out.println( jdbc.queryForList("SELECT * FROM component") );

so wird mir aus einer Datentabelle von 6 Datenzeilen
nur die ersten beiden Datenzeilen ausgegeben. setFetchSize() scheint keinen Effekt zu zeigen.

Geht demzufolge die Einschränkung nur durch direktes "LIMIT" setzen in der SQL - Anweisung?
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
Fetch hat maximal damit zu tun, wieviele Ergebnisse aufeinmal aus der DB geladen und zwischengespeichert werden,
wirkt sich nicht auf die Anzahl der Ergebnisse aus, nur zur Performance

zu MaxRows gibts kein Gegenstück, das stimmt,
für MaxRows wird anscheinend auf den Rest der Ergebnisse verzichtet, ziemlich simpel,
müsste der Logik nach auch am Anfang funktionieren, paar auslassen, aber wohl nicht vorhanden

mit LIMIT in einer SQL-Query ist das nicht direkt vergleichbar
 
G

Gast2

Gast
Es ist meiner Meinung aber nach aber ziemlich sinn frei LIMIT im SQL wegzulassen und dafür im Treiber oder der Applikation zu einzuschränken. Die Datenbank hat da definitiv die beste Performance die Ergebnisse vorzusortieren, filtern und limitieren.
 

Ähnliche Java Themen

Neue Themen


Oben