2016-06-28 5 views
0

Отказ от ответственности: Я все еще очень новый для 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); 

    } 
} 

ответ

0

Привет использовать SqlSessionTemplate, как документально http://www.mybatis.org/spring/sqlsession.html

Это гарантирует, что вы получите ту же самую sqlsession, что и картограф, который используете.

Вы также можете использовать SqlSessionDaoSupport, как описано на этой же странице, если это лучше подходит для вашего использования.

 Смежные вопросы

  • Нет связанных вопросов^_^