Можно ли преобразовать mybatis-config.xml в файл класса для Spring MVC? - PullRequest
0 голосов
/ 13 декабря 2018

Можно ли преобразовать mybatis-config.xml (sql-map-config для filetype xml) в файл класса java?

Я попытался выполнить поиск, но я смог найти только конфигурацию класса для файла сопоставления.

Пожалуйста, дайте мне знать, если это действительно возможно через класс?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Если вы используете mybatis с весенней загрузкой, попробуйте MyBatis-Spring-Boot-Starter , а затем вы можете настроить свою собственную конфигурацию в ConfigurationCustomizer следующим образом:

// @Configuration class
@Bean
ConfigurationCustomizer mybatisConfigurationCustomizer() {
    return new ConfigurationCustomizer() {
        @Override
        public void customize(Configuration configuration) {
            // customize ...
        }
    };
}
0 голосов
/ 14 декабря 2018

Я не уверен, что понял ваш вопрос, но попробуйте это:

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
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 org.apache.ibatis.type.TypeAliasRegistry;

public class MyBatisTest {

    private SqlSessionFactory   sqlSessionFactory;
    private Configuration       configuration;
    private SqlSession          sqlSession;

    /**
     * Call this method first
     */
    public void configure() throws Exception {

        DataSource ds = getDataSource();

        Environment env = new Environment("env", new JdbcTransactionFactory(), ds);

        configuration = new Configuration(env);

        configureMappers();

        sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
    }

    /**
     * Configure data source
     * @return
     */
    public DataSource getDataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("driver.class.name");
        dataSource.setUrl("jdbc:db_connection_string");
        dataSource.setUsername("usr");
        dataSource.setPassword("pass");
        return dataSource;
    }

    /**
     * Configure all mappers
     */
    private void configureMappers() {

        TypeAliasRegistry aliases = configuration.getTypeAliasRegistry();

        aliases.registerAlias("myBean1Alias", MyBean1.class);

        configuration.addMapper(MyMapper1.class);

        // do the same for all bean and mapper classes

    }

    /**
     * Get SqlSession object
     * @return
     */
    public SqlSession getSession() {
        if (sqlSessionFactory == null) {
            throw Exception("...");
        }
        sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }

    /**
     * Close session
     */
    public void closeSession() {
        if (sqlSession != null) {
            sqlSession.close();
        }
    }

    public static void main(String[] args) {

        MyBatisTest test = new MyBatisTest();

        try {

            test.configure();

            SqlSession session = test.getSession();

            // do work
            MyMapper1 mapper = session.getMapper(MyMapper1.class);
            // etc.

        } catch (Exception e) {
            //
        } finally {
            test.closeSession();
        }

    }

}
...