FYI, for those interested... This is our library we're using: https://github.com/cvent/dropwizard-mybatis
On Thursday, January 26, 2017 at 11:30:12 AM UTC-5, Brent Ryan wrote: > > I haven't dropped it in a public repository yet. I'll see if I can make > time to push it out to our open source repository on github. > > On Thu, Jan 26, 2017 at 1:07 AM Joe Ernst <[email protected]> wrote: > >> 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]> >>> 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]. >>>> 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]. >> 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.
