import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
import com.github.pagehelper.PageHelper;
@Configuration
@EnableTransactionManagement
public class MybatisConfiguration implements TransactionManagementConfigurer{
private static Log logger = LogFactory.getLog(MybatisConfiguration. class );
@Autowired
private DataSource dataSource;
// 提供SqlSeesion
@Bean (name = "sqlSessionFactory" )
public SqlSessionFactory sqlSessionFactoryBean() {
try {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
// 手寫配置
// 配置類型別名
sessionFactoryBean.setTypeAliasesPackage( "com.zsx.entity" );
// 配置mapper的掃描,找到所有的mapper.xml映射文件
Resource[] resources = new PathMatchingResourcePatternResolver()
.getResources( "classpath:mybatis/mapper/*.xml" );
sessionFactoryBean.setMapperLocations(resources);
// 加載全局的配置文件
sessionFactoryBean.setConfigLocation(
new DefaultResourceLoader().getResource( "classpath:mybatis/mybatis-config.xml" ));
//添加插件
sessionFactoryBean.setPlugins( new Interceptor[]{pageHelper()});
return sessionFactoryBean.getObject();
} catch (IOException e) {
logger.warn( "mybatis resolver mapper*xml is error" );
return null ;
} catch (Exception e) {
logger.warn( "mybatis sqlSessionFactoryBean create error" );
return null ;
}
}
@Bean
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public PageHelper pageHelper(){
logger.info( "MyBatis分頁插件PageHelper" );
//分頁插件
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty( "offsetAsPageNum" , "true" );
properties.setProperty( "rowBoundsWithCount" , "true" );
properties.setProperty( "reasonable" , "true" );
properties.setProperty( "supportMethodsArguments" , "true" );
properties.setProperty( "returnPageInfo" , "check" );
properties.setProperty( "params" , "count=countSql" );
pageHelper.setProperties(properties);
return pageHelper;
}
}
|