Brent,
Did you ever end up open-sourcing your MyBatis-Dropwizard integration? I
can copy your code from here, but I'd rather get it from GitHub if you have
put it there.
On Thursday, February 19, 2015 at 8:09:17 AM UTC-8, Brent Ryan wrote:
>
> It's a pretty simple implementation and we plan on putting this up as OSS
> soon if anyone wants it:
>
> *Initialize your mybatis tier like this:*
> final ManagedDataSource ds =
> configuration.getDataSourceFactory().build(environment.metrics(), "sql");
>
> MyBatisFactory factory = new MyBatisFactory();
> SqlSessionFactory sessionFactory = factory.build(environment,
> configuration.getDataSourceFactory(), ds,
> "sqlserver");
> sessionFactory.getConfiguration().addMapper(MyExampleDAO.class);
>
> sessionFactory.getConfiguration().getTypeHandlerRegistry().register(Date.class,
>
> ESTDateTypeHandler.class);
>
> *Use it like this:*
> try (SqlSession session = sessionFactory.openSession(true)) {
> MyExampleDAO dao = session.getMapper(MyExampleDAO.class);
>
> dao.doSomething()
> }
>
> *The factory class looks like this:*
>
> package com.cvent.dropwizard.mybatis;
>
> import io.dropwizard.setup.Environment;
> import io.dropwizard.db.ManagedDataSource;
> import io.dropwizard.db.DataSourceFactory;
> import org.apache.ibatis.io.Resources;
> import org.apache.ibatis.session.Configuration;
> import org.apache.ibatis.session.SqlSessionFactory;
> import org.apache.ibatis.session.SqlSessionFactoryBuilder;
> import org.apache.ibatis.transaction.TransactionFactory;
> import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
>
> import java.io.IOException;
> import java.io.InputStream;
>
> /**
> * A factor for creating instances of MyBatis
> *
> * @author bryan
> */
> public class MyBatisFactory {
> /**
> * A string to identify this instance within ibatis framework. Only
> here because API requires it.
> */
> private static final String ENV_NAME = "mybatis";
>
> /**
> * Create an instance of MyBatis.
> *
> * @param environment The dropwizard environment
> * @param config A Mybatis config object
> * @param name The name of this mybatis factory used for metrics
> * @return An instance of MyBatis.
> * @throws ClassNotFoundException
> */
> public final SqlSessionFactory build(Environment environment,
> MyBatisConfiguration config,
> String name) throws ClassNotFoundException {
> final ManagedDataSource dataSource =
> config.getConfig().build(environment.metrics(), name);
> return build(environment, config, dataSource, name);
> }
>
> /**
> * Create an instance of MyBatis.
> *
> * @param environment The dropwizard environment
> * @param config A Mybatis config object
> * @param dataSource
> * @param name The name of this mybatis factory used for metrics
> * @return An instance of MyBatis.
> */
> public final SqlSessionFactory build(Environment environment,
> MyBatisConfiguration config,
> ManagedDataSource dataSource,
> String name) {
>
> SqlSessionFactory sessionFactory = null;
>
> // Try to use the mybatis configuration file if it is specified
> and exists.
> try (InputStream inputStream =
> Resources.getResourceAsStream(config.getConfigFile())) {
> sessionFactory = new
> SqlSessionFactoryBuilder().build(inputStream);
> } catch (IOException ioe) {
> // Build session factory from configuration values given in
> the dropwizard config.
> TransactionFactory transactionFactory = new
> JdbcTransactionFactory();
> org.apache.ibatis.mapping.Environment myBatisEnvironment =
> new org.apache.ibatis.mapping.Environment(ENV_NAME,
> transactionFactory, dataSource);
> Configuration mybatisConfiguration = new
> Configuration(myBatisEnvironment);
> sessionFactory = new
> SqlSessionFactoryBuilder().build(mybatisConfiguration);
> }
>
> environment.lifecycle().manage(dataSource);
> environment.healthChecks().register(name,
> new MyBatisHealthCheck(sessionFactory, name,
> getValidationQuery(config.getConfig())));
>
> return sessionFactory;
> }
>
> /**
> * Create an instance of MyBatis.
> *
> * @param environment The dropwizard environment
> * @param configuration The data source factory/configuration
> * @param dataSource The datasource you want to use.
> * @param name The name of this mybatis factory used for metrics
> * @return An instance of MyBatis.
> */
> public final SqlSessionFactory build(Environment environment,
> DataSourceFactory configuration,
> ManagedDataSource dataSource,
> String name) {
> // Initialize validation query
> final String suppliedValidationQuery =
> configuration.getValidationQuery();
> final String validationQuery;
>
> //if the user uses the default health check in dropwizard, health
> check will fail
> //because there will be no mapper for the query.
> if (suppliedValidationQuery.equalsIgnoreCase("/* Health Check */
> SELECT 1")) {
> validationQuery =
> "com.cvent.dropwizard.mybatis.mappers.HealthCheckMapper.healthCheck";
> } else {
> validationQuery = suppliedValidationQuery;
> }
>
> // Build mybatis session factory
> TransactionFactory transactionFactory = new
> JdbcTransactionFactory();
> org.apache.ibatis.mapping.Environment myBatisEnvironment =
> new org.apache.ibatis.mapping.Environment(ENV_NAME,
> transactionFactory, dataSource);
> Configuration mybatisConfiguration = new
> Configuration(myBatisEnvironment);
> SqlSessionFactory sessionFactory = new
> SqlSessionFactoryBuilder().build(mybatisConfiguration);
>
> // Setup managed data source and health checks
> environment.lifecycle().manage(dataSource);
> environment.healthChecks().register(name, new
> MyBatisHealthCheck(sessionFactory, name, validationQuery));
>
> return sessionFactory;
> }
>
> /**
> * Get validation query value
> *
> * @param mybatisConfig Configuration values for mybatis
> */
> private String getValidationQuery(DataSourceFactory mybatisConfig) {
>
> // Initialize validation query
> final String suppliedValidationQuery =
> mybatisConfig.getValidationQuery();
> final String validationQuery;
>
> //if the user uses the default health check in dropwizard, health
> check will fail
> //because there will be no mapper for the query.
> if (suppliedValidationQuery.equalsIgnoreCase("/* Health Check */
> SELECT 1")) {
> validationQuery =
> "com.cvent.dropwizard.mybatis.mappers.HealthCheckMapper.healthCheck";
> } else {
> validationQuery = suppliedValidationQuery;
> }
>
> return validationQuery;
> }
> }
>
>
>
> On Sun Feb 08 2015 at 11:42:40 AM Alexandre Jacques <[email protected]
> <javascript:>> wrote:
>
>> Hi Brent,
>>
>> I would be interested on your approach to integrate MyBatis. Could you
>> post some thoughts on how you did it?
>>
>> Regards,
>>
>> Alexandre Jacques
>>
>>
>> On Wednesday, January 21, 2015 at 10:19:06 PM UTC-2, Brent Ryan wrote:
>>
>>> It was fairly easy to integrate mybatis with our dropwizard stack. Let
>>> me know if you need help in doing so.
>>>
>>> Brent
>>>
>> On Wed, Jan 21, 2015 at 5:25 PM Miguel larraz <[email protected]> wrote:
>>>
>> I agree, I am interested in use dropwizzard, but jdbi looks tedius,
>>>> compared with mybatis. Is not posible configure mybatis support? i found
>>>> hibernate alternative in the documentation, but no mybatis
>>>>
>>>> El sábado, 8 de febrero de 2014, 19:50:02 (UTC+1), Brent Ryan escribió:
>>>>
>>>>> Out of curiosity, any reason why dropwizard went with jdbi instead of
>>>>> mybatis as the default? It appears like mybatis is a little more
>>>>> advanced
>>>>> (but same concept) and has better documentation.
>>>>>
>>>>> Brent
>>>>>
>>>> --
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "dropwizard-user" group.
>>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>>> topic/dropwizard-user/K-3kek-xIrc/unsubscribe.
>>>>
>>> To unsubscribe from this group and all its topics, send an email to
>>>> [email protected].
>>>
>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "dropwizard-user" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/dropwizard-user/K-3kek-xIrc/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
--
You received this message because you are subscribed to the Google Groups
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.