JDBC Helper

Bind automatically JDBC Connection URL and Driver

For those users (like me!!!) don't have a dictionary to quickly retrieve the JDBC url pattern and the driver class name for a specific DBMS, here it comes the org.mybatis.guice.datasource.helper.JdbcHelper Module.

It is an easy to use Google Guice module that makes easy the JDBC.url and JDBC.driver properties binding needed for the DataSource providers.

The org.mybatis.guice.datasource.helper.JdbcHelper provides a large number of Enumeration values that cover the most popular DBMS (both commercial and open source) that are provided/recommended by the actual database vendor, resumed in the table below.

Variable Format Patterns contain variables in the Apache ANT alike style, in the format ${name|defaultValue}, where name is used as label which will looked for in the current Guice Injector, with defaultValue as its default value, replaced in the pattern if name is not found.

NOTE this feature doesn't work with XML Module!!!

Supported DBMS

DBMS URL pattern
JdbcHelper.Cache jdbc:Cache://${JDBC.host|localhost}:${JDBC.port|1972}/${JDBC.schema}
JdbcHelper.Daffodil_DB jdbc:daffodilDB://${JDBC.host|localhost}:${JDBC.port|3456}/${JDBC.schema}
JdbcHelper.DB2 jdbc:db2://${JDBC.host|localhost}:${JDBC.port|50000}/${JDBC.schema}
JdbcHelper.DB2_DataDirect jdbc:datadirect:db2://${JDBC.host|localhost}:${JDBC.port|50000}/DatabaseName=${JDBC.schema}
JdbcHelper.DB2_AS400_JTOpen jdbc:as400://${JDBC.host|localhost}
JdbcHelper.Firebird jdbc:firebirdsql:${JDBC.host|localhost}/${JDBC.port|3050}:${JDBC.schema}
JdbcHelper.FrontBase jdbc:FrontBase://${JDBC.host|localhost}/${JDBC.schema}
JdbcHelper.HP_Neoview jdbc:hpt4jdbc://${neoview.system}:${JDBC.port}/:
JdbcHelper.HSQLDB_Server jdbc:hsqldb:hsql://${JDBC.host|localhost}:${JDBC.port|9001}/${JDBC.schema}
JdbcHelper.HSQLDB_Embedded jdbc:hsqldb:${JDBC.schema}
JdbcHelper.H2_IN_MEMORY_PRIVATE jdbc:h2:mem"
JdbcHelper.H2_IN_MEMORY_NAMED jdbc:h2:mem:${JDBC.schema}"
JdbcHelper.H2_SERVER_TCP jdbc:h2:tcp://${JDBC.host|localhost}:${JDBC.port|9001}/${JDBC.schema}"
JdbcHelper.H2_SERVER_SSL jdbc:h2:ssl://${JDBC.host|localhost}:${JDBC.port|9001}/${JDBC.schema}"
JdbcHelper.H2_FILE jdbc:h2:file://${JDBC.schema}"
JdbcHelper.H2_EMBEDDED jdbc:h2:${JDBC.schema}"
JdbcHelper.Informix jdbc:informix-sqli://${JDBC.host|localhost}:${JDBC.port|1533}/${JDBC.schema}: informixserver=${dbservername}
JdbcHelper.Informix_DataDirect jdbc:datadirect:informix://${JDBC.host|localhost}:${JDBC.port|1533}; InformixServer=${informixserver};DatabaseServer=${JDBC.schema}
JdbcHelper.Derby_Server jdbc:derby://${JDBC.host|localhost}:${JDBC.port|1527}/${JDBC.schema}
JdbcHelper.Derby_Embedded jdbc:derby:${JDBC.schema};create=${derby.create|false}
JdbcHelper.JDataStore jdbc:borland:dslocal:${JDBC.schema}
JdbcHelper.JDBC_ODBC_Bridge jdbc:odbc:${ODBC.datasource}
JdbcHelper.MariaDB jdbc:mysql://${JDBC.host|localhost}:${JDBC.port|3306}/${JDBC.schema}
JdbcHelper.MaxDB jdbc:sapdb://${JDBC.host|localhost}:${JDBC.port|7210}/${JDBC.schema}
JdbcHelper.McKoi jdbc:mckoi://${JDBC.host|localhost}:${JDBC.port|9157}/${JDBC.schema}
JdbcHelper.Mimer jdbc:mimer:${mimer.protocol}://${JDBC.host|localhost}:${JDBC.port|1360}/${JDBC.schema}
JdbcHelper.MySQL jdbc:mysql://${JDBC.host|localhost}:${JDBC.port|3306}/${JDBC.schema}
JdbcHelper.Netezza jdbc:netezza://${JDBC.host|localhost}:${JDBC.port|5480}/${JDBC.schema}
JdbcHelper.Oracle_Thin jdbc:oracle:thin:@${JDBC.host|localhost}:${JDBC.port|1521}:${oracle.sid|ORCL}
JdbcHelper.Oracle_OCI jdbc:oracle:oci:@${JDBC.host|localhost}:${JDBC.port|1521}:${oracle.sid|ORCL}
JdbcHelper.Oracle_DataDirect jdbc:datadirect:oracle://${JDBC.host|localhost}:${JDBC.port|1521}; ServiceName=${oracle.servicename|ORCL}
JdbcHelper.Pervasive jdbc:pervasive://${JDBC.host|localhost}:${JDBC.port}/${JDBC.schema}
JdbcHelper.Pointbase_Embedded jdbc:pointbase:embedded:${JDBC.schema},database.home=${pointbase.home} ,create=${pointbase.create|false}
JdbcHelper.Pointbase_Server jdbc:pointbase:server://${JDBC.host|localhost}:${JDBC.port|9092}/${JDBC.schema} ,database.home=${pointbase.home},create=${pointbase.create|false}
JdbcHelper.PostgreSQL jdbc:postgresql://${JDBC.host|localhost}:${JDBC.port|5432}/${JDBC.schema}
JdbcHelper.Progress jdbc:jdbcProgress:T:${JDBC.host|localhost}:${JDBC.port|2055}:${JDBC.schema}
JdbcHelper.SQL_Server_DataDirect jdbc:datadirect:sqlserver://${JDBC.host|localhost}:${JDBC.port|1433}; DatabaseName=${JDBC.schema|Northwind}
JdbcHelper.SQL_Server_jTDS jdbc:jtds:sqlserver://${JDBC.host|localhost}:${JDBC.port|1433}; DatabaseName=${JDBC.schema|Northwind};domain=${sqlserver.domain}
JdbcHelper.SQL_Server_MS_Driver jdbc:microsoft:sqlserver://${JDBC.host|localhost}:${JDBC.port|1433}; DatabaseName=${JDBC.schema|Northwind}
JdbcHelper.SQL_Server_2005_MS_Driver jdbc:sqlserver://${JDBC.host|localhost}:${JDBC.port|1433};DatabaseName=${JDBC.schema|Northwind}
JdbcHelper.Sybase_ASE_jTDS jdbc:jtds:sybase://${JDBC.host|localhost}:${JDBC.port|5000};DatabaseName=${JDBC.schema}
JdbcHelper.Sybase_ASE_JConnect jdbc:sybase:Tds:${JDBC.host|localhost}:${JDBC.port|5000}/${JDBC.schema}
JdbcHelper.Sybase_SQL_Anywhere_JConnect jdbc:sybase:Tds:${JDBC.host|localhost}:${JDBC.port|2638}/${JDBC.schema}
JdbcHelper.Sybase_DataDirect jdbc:datadirect:sybase://${JDBC.host|localhost}:${JDBC.port|2048};ServiceName=${JDBC.schema}

Usage Example

Using the helper is simpler than explain how it works, let's have a look at the code below that configures the PooledDataSourceProvider for MySQL:

final Properties myBatisProperties = new Properties();
myBatisProperties.setProperty("mybatis.environment.id", "test");
// configure the database host
myBatisProperties.setProperty("JDBC.host", "contacts.acme.db");
// configure the database port
myBatisProperties.setProperty("JDBC.port", "6969");
// configure the database schema
myBatisProperties.setProperty("JDBC.schema", "contacts_test");
myBatisProperties.setProperty("JDBC.username", "fooTest");
myBatisProperties.setProperty("JDBC.password", "barPWD");
myBatisProperties.setProperty("JDBC.autoCommit", "false");
// binds the JDBC connection URL and the Driver class name for MySQL
Injector injector = Guice.createInjector(JdbcHelper.MySQL,
    new MyBatisModule() {
        public void configure(Binder binder) {
            setDataSourceProviderType(PooledDataSourceProvider.class);
            addSimpleAliases(Contact.class);
            addMapperClasses(ContactMapper.class);
        }
    },
    new Module() {
        public void configure(Binder binder) {
            /* binds the properties configuration; JDBC.host,
             * JDBC.port and JDBC.schema will be used to be
             * replaced in the URL Pattern
             */
            Names.bindProperties(binder, myBatisProperties);
        }
    });