Giriş
Bu metodun 4 tane overload edilmiş hali var
1. jdbc metodu - SupplierEx + ToResultSetFunction + FunctionEx
İmzası şöyle
public static <T> BatchSource<T> jdbc(
SupplierEx<? extends Connection> newConnectionFn,
ToResultSetFunction resultSetFn,
FunctionEx<? super ResultSet, ? extends T> createOutputFn
)
public static <T> BatchSource<T> jdbc(
DataConnectionRef dataConnectionRef,
ToResultSetFunction resultSetFn,
FunctionEx<? super ResultSet, ? extends T> createOutputFn
)
public static <T> BatchSource<T> jdbc(
String connectionURL,
String query,
FunctionEx<? super ResultSet, ? extends T> createOutputFn
)
public static <T> BatchSource<T> jdbc(
String connectionURL,
String query,
Properties properties,
FunctionEx<? super ResultSet, ? extends T> createOutputFn
)
Birinci parametre JDBC Connection nesnesini döndürür
İkinci parametre JDBC ResultSet nesnesini döndürür
Üçüncü parametre JDBC ResultSet nesnesinden Java nesnesi döndürür
Örnek
Pipeline p = Pipeline.create();
p.readFrom(Sources.jdbc(
() -> DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"),
(con, parallelism, index) -> {
PreparedStatement stmt = con.prepareStatement(
"SELECT * FROM person WHERE MOD(id, ?) = ?)");
stmt.setInt(1, parallelism);
stmt.setInt(2, index);
return stmt.executeQuery();
},
resultSet -> new Person(resultSet.getInt(1), resultSet.getString(2))
)).writeTo(Sinks.logger());