Package com.pyranid
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
-
ClassDescriptionAllows specification of alternate column names for resultset mapping.Thrown when an error occurs when interacting with a
Database
.Identifies different types of databases, which allows for special platform-specific handling.Basic implementation ofInstanceProvider
which usesClass.newInstance()
.Basic implementation ofPreparedStatementBinder
.Basic implementation ofResultSetMapper
.Contract for a factory that creates instances given a type.Contract for binding parameters to SQL prepared statements.Contract for mapping aResultSet
row to a different type.Represents a transactional operation capable of returning a value.A collection of SQL statement execution diagnostics.Builder forStatementLog
instances.Contract for handling database statements log events.Application-specific metadata associated with a SQL statement.Represents a transactional operation.Strategies for database locking during transactional operations.