自定义数据配置
@Slf4j
@Configuration
@MapperScan(basePackages = { "com.baidu.dal.demo"}, sqlSessionFactoryRef = "demoSqlSessionFactory")
public class DemoDataSourceConfig {
@Bean(name = "demoDataSource")
@ConfigurationProperties(prefix="jdbc.demo" )
@Primary
public DataSource primaryDataSource() {
log.info("数据库连接池创建中.......");
return DataSourceBuilder.create().build();
}
@Bean(name = "demoTransactionManager")
public DataSourceTransactionManager demoTransactionManager(@Qualifier("demoDataSource") DataSource demoDataSource) {
return new DataSourceTransactionManager(demoDataSource);
}
@Bean(name = "demoSqlSessionFactory")
public SqlSessionFactory demoSqlSessionFactory(@Qualifier("demoDataSource") DataSource demoDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(demoDataSource);
sessionFactoryBean.getObject().getConfiguration().setDefaultFetchSize(Integer.MIN_VALUE);
return sessionFactoryBean.getObject();
}
@Bean(name = "demoSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(
@Qualifier("demoSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
sqlSessionFactory.getConfiguration().setDefaultFetchSize(Integer.MIN_VALUE);
return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.SIMPLE);
}
}
游标
SqlSession sqlSession = null;
try {
sqlSession = getSqlSessionTemplate().getSqlSessionFactory().openSession();
cursor = sqlSession.selectCursor(getSourceStatement(), params);
}finally{
if (null != cursor) {
try {
cursor.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
if (null != sqlSession) {
try {
sqlSession.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
protected void processCursorData(Cursor<V> cursor) {
// Todo 获取数据抽取 函数式编程
for (V detailData : cursor) {
}
}