Package io.jooby.jdbi

Class JdbiModule

java.lang.Object
io.jooby.jdbi.JdbiModule
All Implemented Interfaces:
Extension

public class JdbiModule extends Object implements Extension
Jdbi module: https://jooby.io/modules/hikari.

Usage:

- Add hikari and jdbi dependency

- Install them


 {
   install(new HikariModule());

   install(new JdbiModule());
 }
 
- Use it

 {

   get("/", ctx -> {
     Jdbi jdbi = require(Jdbi.class);
     // do with jdbi
   });

 }
 
Handle instances are also available:

 {

   get("/", ctx -> {
     try(Handle handle = require(Handle.class)) {
       // do with handle
     }
   });

 }
 
The use of try-with-resources is required here. Handle must be closed once you finish.

For automatic handle managment see the TransactionalRequest class.

Since:
2.0.0
Author:
edgar
  • Constructor Details

    • JdbiModule

      public JdbiModule()
      Creates a new Jdbi module using the db property key. This key must be present in the application configuration file, like:
      
       db.url = "jdbc:url"
       db.user = dbuser
       db.password = dbpass
       
    • JdbiModule

      public JdbiModule(@NonNull String name)
      Creates a new Jdbi module.
      Parameters:
      name - The name/key of the data source to attach.
    • JdbiModule

      public JdbiModule(@NonNull Function<DataSource,org.jdbi.v3.core.Jdbi> factory)
      Creates a new Jdbi module. Use the default/first datasource and register objects using the db key.
      Parameters:
      factory - Jdbi factory.
    • JdbiModule

      public JdbiModule(@NonNull String name, @NonNull Function<DataSource,org.jdbi.v3.core.Jdbi> factory)
      Creates a new Jdbi module using the given jdbi factory.
      Parameters:
      name - Name for registering the service.
      factory - Jdbi factory.
  • Method Details

    • sqlObjects

      @NonNull public JdbiModule sqlObjects(@NonNull Class... sqlObjects)
      Attach SQL objects to a jdbi handle.

      This method simplify the injection or require of SQL objects. So, it is just a shortcut for Handle.attach(Class). Due the SQL objects depends on a Handle this method is only available when the TransactionalRequest decorator is present.

      
       install(new JdbiModule()
         .sqlObjects(UserDAO.class)
       );
      
       use(new TransactionalRequest());
      
       get("/users", ctx -> {
         UserDAO dao = require(UserDAO.class);
       });
       
      Parameters:
      sqlObjects - List of SQL object to register as services.
      Returns:
      This module.
    • install

      public void install(@NonNull Jooby application) throws Exception
      Specified by:
      install in interface Extension
      Throws:
      Exception