Class DataReader<T>
java.lang.Object
br.com.intersys.systextil.connection.DataReader<T>
- Type Parameters:
T
- o tipo de objeto retornado em cada loop
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterable<T>
,Iterator<T>
Um leitor de registros genérico que pode ser usado em loops "for-each".
Para cada registro, retorna um objeto construído com o
Maker
informado. Se tentar ler um registro após o último, fecha o resultset.
A grande utilidade deste objeto é a de poder ler e permitir processar um registro por vez. Outras soluções requerem memorizar todos os registros antes de poder usá-los.
Um exemplo de uso possível deste objeto:
AppConnection cn = new AppConnection(conn, SQL, params); cn.executeQuery(); for(Tipo t : new DataReader(cn, Tipo.MAKER) { // Processar t... }
Em vez disso, a classe do Tipo
pode retornar o DataReader
pronto:
public static DataReader<Tipo> readTipos(AppConnection conn, params...) { AppConnection cn = new AppConnection(conn, SQL, params); cn.executeQuery(); return new DataReader(cn, MAKER); }
- Author:
- sergio
-
Constructor Summary
ConstructorsConstructorDescriptionDataReader
(AppConnection rs, Maker<T> maker) Constrói um leitor de registros. -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
DataReader
Constrói um leitor de registros.- Parameters:
rs
- o resultset, posicionado antes do registro a lermaker
- o construtor de objetos a partir de registros
-
-
Method Details
-
iterator
-
hasNext
public boolean hasNext() -
next
-
remove
public void remove()Não deve ser usado.- Specified by:
remove
in interfaceIterator<T>
- Throws:
UnsupportedOperationException
- pois não remove nada.
-
stream
Fornece um Stream. Só pode ser usado uma vez em cada DataReader.- Returns:
- o Stream
-
hasRecordsRead
public boolean hasRecordsRead()Informa se foi lido algum registro.É conveniente ao fim de um loop para informar se o resultset tinha dados. Por exemplo:
DataReader<Tipo> dr = new DataReader(cn, Tipo.MAKER); for(Tipo t : dr) { // Processar t... } if(!dr.hasRecordsRead()) { // Não havia dados... } int qt = dr.recordCount();
- Returns:
- se foi lido algum registro
-
recordCount
public int recordCount()Informa quantos registros foram lidos até o momento.- Returns:
- se foi lido algum registro
- See Also:
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
main
- Throws:
Exception
-