Package com.pyranid
Pyranid is a minimalist JDBC interface for modern Java applications.
See https://www.pyranid.com for more detailed documentation and code samples.
// Minimal setup, uses defaults Database database = Database.forDataSource(dataSource).build(); // Customized setup Database customDatabase = Database.forDataSource(dataSource).instanceProvider(new InstanceProvider() { @Override public <T> T provide(Class<T> instanceClass) { // You might have your DI framework vend resultset row instances return guiceInjector.getInstance(instanceClass); } }).resultSetMapper(new ResultSetMapper() { @Override public <T> T map(ResultSet rs, Class<T> resultClass) { // Do some custom mapping here } }).preparedStatementBinder(new PreparedStatementBinder() { @Override public void bind(PreparedStatement ps, List<Object> parameters) { // Do some custom binding here } }).statementLogger(new StatementLogger() { @Override public void log(StatementLog statementLog) { // Send log to whatever output sink you'd like out.println(statementLog); } }).build(); // Queries Optional<Car> specificCar = database.queryForObject("SELECT * FROM car WHERE id = ?", Car.class, 123); List<Car> blueCars = database.queryForList("SELECT * FROM car WHERE color = ?", Car.class, Color.BLUE); Optional<UUID> id = database.queryForObject("SELECT id FROM widget LIMIT 1", UUID.class); List<BigDecimal> balances = database.queryForList("SELECT balance FROM account", BigDecimal.class); // Statements int updateCount = database.execute("UPDATE car SET color = ?", Color.RED); Optional<UUID> id = database.executeReturning("INSERT INTO book VALUES (?) RETURNING id", UUID.class, "The Stranger"); // Transactions database.transaction(() -> { BigDecimal balance1 = database.queryForObject("SELECT balance FROM account WHERE id = 1", BigDecimal.class).get(); BigDecimal balance2 = database.queryForObject("SELECT balance FROM account WHERE id = 2", BigDecimal.class).get(); balance1 = balance1.subtract(amount); balance2 = balance2.add(amount); database.execute("UPDATE account SET balance = ? WHERE id = 1", balance1); database.execute("UPDATE account SET balance = ? WHERE id = 2", balance2); });
- Since:
- 1.0.0
- Author:
- Mark Allen
-
Interface Summary Interface Description InstanceProvider Contract for a factory that creates instances given a type.PreparedStatementBinder Contract for binding parameters to SQL prepared statements.ResultSetMapper Contract for mapping aResultSet
row to a different type.ReturningTransactionalOperation<T> Represents a transactional operation capable of returning a value.StatementLogger Contract for handling database statements log events.TransactionalOperation Represents a transactional operation. -
Class Summary Class Description Database Database.Builder DefaultInstanceProvider Basic implementation ofInstanceProvider
which usesClass.newInstance()
.DefaultPreparedStatementBinder Basic implementation ofPreparedStatementBinder
.DefaultResultSetMapper Basic implementation ofResultSetMapper
.DefaultStatementLogger StatementLog A collection of SQL statement execution diagnostics.StatementLog.Builder Builder forStatementLog
instances.StatementMetadata Application-specific metadata associated with a SQL statement.StatementMetadata.Builder Transaction -
Enum Summary Enum Description DatabaseType Identifies different types of databases, which allows for special platform-specific handling.TransactionIsolation Strategies for database locking during transactional operations. -
Exception Summary Exception Description DatabaseException Thrown when an error occurs when interacting with aDatabase
. -
Annotation Types Summary Annotation Type Description DatabaseColumn Allows specification of alternate column names for resultset mapping.