Как я могу установить источник данных в mybatis-config.xml при использовании springboot? - PullRequest
0 голосов
/ 19 октября 2018

Spring Boot может создать источник данных, когда я настраиваю источник данных в application.properties.Как указано ниже:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Я также могу установить файл mybatis-config в application.properties.как:

mybatis.config-location=classpath:mybatis-config.xml

Как мы все знаем, mybatis-config.xml может также конфигурировать источник данных.Так что, если я не установлю источник данных в application.properties, а только установлю источник данных в mybatis-config.xml?

Я попытался, я удалил конфигурацию источника данных в application.properties и установил источник данных в mybatis-config.xml.Но это не сработало.

Как настроить источник данных в mybatis-config.xml при использовании springboot?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Механизму Mybatis требуется DataSource для создания jdbc Connection, который он может использовать для выполнения запросов.При обычной настройке это DataSource настраивается как компонент в весеннем контексте.Mappers также являются бинами в контексте Spring, которые используют этот источник данных (косвенно через SqlSession).

Вы можете настроить DataSource в mybatis-config.xml, как описано в документации .Единственная проблема заключается в том, что в случае, если Spring не будет знать об этом DataSource, он не будет компонентом в контексте Spring.И это проблема, с которой вы сталкиваетесь.

Spring не будет управлять транзакциями для вас в этом случае, вы не сможете внедрять мапперы или SqlSession в свои bean-компоненты.По сути, вы потеряете все, что дает интеграция mybatis-spring, поэтому нет смысла настраивать mybatis DataSource в конфигурации mybatis.

Если вы, тем не менее, сделаете это, вам потребуется вручную создать SqlSession из конфигурации xml и затем вручную зафиксировать / откатить транзакцию с помощью SqlSession.commit / SqlSession.rollback.

0 голосов
/ 19 октября 2018

Вы должны поместить свойства базы данных в конфигурационный файл Spring-boot, например application.propertiesПосле этого вы можете получить источник данных:

@Autowired
private Environment env;

DataSourceBuilder.create()
    .url(env.getProperty("spring.datasource.url"))
    .driverClassName(env.getProperty("spring.datasource.driver-class-name"))
    .username(env.getProperty("spring.datasource.username"))
    .password(env.getProperty("spring.datasource.password"))
    .build());

Затем использовать источник данных для получения SqlSession:

    TransactionFactory transactionFactory = new JdbcTransactionFactory();
    Environment environment = new Environment("id", transactionFactory, "id");
    Configuration configuration = new Configuration(environment);
    configuration.addMapper(YourMapper.class);

    return new SqlSessionTemplate(sqlSessionFactoryBuilder.build(configuration));

Затем использовать SqlSession get mapper:

sqlSession.getMapper(YourMapper.class);

Mybatisпросто нужен SqlSession для getMapper и запуска отображения, предоставляя отображение с помощью интерфейса Java.Так что mybatis не нужно обращать внимание на источник данных.

...