Отказ от ответственности: Я все еще очень новый для MyBatis & Весна поэтому, пожалуйста, простите меня, если некоторые детали отсутствуют ниже.Как получить текущую сессию при использовании MapperFactoryBean?
У меня есть код, который использует MapperFactoryBean
в MyBatis для автоматического управления транзакциями базы данных без необходимости создания классов DAO в моем Java-коде. Это также означает, что при использовании этого подхода пользователю не нужно писать какой-либо специфичный для сеанса код, так как MyBatis напрямую обрабатывает сеансы для связи с самой базой данных.
Вопрос: Так что, если это так, если вы хотите получить текущую сессию, как вы это делаете? В Hibernate вы можете сделать getSessionFactory().getCurrentSession()
, чтобы получить текущую сессию. Что такое эквивалентная команда для MyBatis, когда метод MyBatis MapperFactoryBean
используется для связи с базой данных?
Вот фрагменты моего текущего кода:
beans.xml:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.countries.dataaccess" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="countriesMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.countries.dataaccess.CountryMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<bean id="countriesFacade" class="com.countries.facade.CountriesFacade" />
com.countries.dataaccess.CountryMapper:
public interface CountryMapper {
public List<CountryOutlineDTO> getAllCountries(List<String> merchantType);
public CountryDetailsDTO getCountryInfo(String countryCode);
//etc ....
}
com.countries .delegate.CountriesServiceDelegate:
public interface CountriesServiceDelegate {
public CountryDetails getCountryDetails(String countryCode, String locale) throws Exception;
public List<CountryDetails> getAllCountryDetails(List<String> merchantTypeList, boolean verbose) throws Exception;
public Health getDBHealth();
}
com.countries.delegate.impl.CountriesServiceDelegateImpl:
public class CountriesServiceDelegateImpl implements CountriesServiceDelegate {
@Autowired
private CountriesFacade countriesFacade;
@Override
public CountryDetails getCountryDetails(String countryCode, String locale) {
//Implementation logic here ...
}
@Override
public List<CountryDetails> getAllCountryDetails(List<String> merchantTypeList, boolean verbose) {
//Implementation logic here ...
}
}
com.countries.facade:
public class CountriesFacade {
@Autowired
@Qualifier("countriesMapper")
private CountryMapper countriesMapper;
public CountryDetails getCountryInfo(String countryCode, String locale) {
//Implementation logic here such as xyz = countriesMapper.getCountryInfo(countryCode);
}
public List<CountryDetails> getAllCountries(List<String> merchantType, boolean verbose) {
//Implementation logic here such as xyz = countriesMapper.getCountryInfo(countryCode);
}
}