Я могу использовать простое соединение (не XA) в Mybatis. Но есть ли способ инициализировать источник данных XA и получить соединение XA с помощью источника данных XA?
@Bean(name = "ucpDataSourceNonXA")
@Primary
public DataSource getDataSource() {
PoolDataSource pds = null;
pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
...
return pds;
}
@Bean(name = "ucpDataSourceXA")
public DataSource getXADataSource() {
PoolXADataSource pds = null;
pds = PoolDataSourceFactory.getPoolXADataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.xa.client.OracleXADataSource");
return pds;
}
Конфигурация MyBatis:
@Component
public class MyBatisConfiguration {
@Autowired
@Qualifier("ucpDataSourceNonXA")
private DataSource dataSource;
@Bean(name = "customSqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment =
new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(AccountMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
return sqlSessionFactory;
}
}
Mapper.java
@Mapper
public interface AccountMapper {
@Select("SELECT * FROM accounts WHERE account_id = #{account_id}")
Account findByAccountId(@Param("account_id") String account_id);
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-mybatis