EasyExcel を使用してエクスポート データを Excel テーブルに書き込みました。エクスポートできるアイテムは 500 件のみであることがわかりました。制限を 10000000 に変更した後、エクスポートできるアイテムは 500 件のみになりました。分析後のエクスポート機能では、MybatisPlus と EasyExcel の 2 つのツールが使用されています。問題はこれら 2 つのツールにあると推定されます。
@ApiOperation(value = "整改版本详情 - 导出")
@PostMapping(value = "/changeversion-export")
public R<String> export(@RequestBody ChangeVersionDetailDTO changeVersionDetailDTO, HttpServletResponse response) {
log.info("ChangeVersionDetailController -> export -> ,changeVersion {}" ,changeVersionDetailDTO);
changeVersionDetailDTO.setSize((long) -1);
R<IPage<ChangeVersionDetailDTO>> iPageR = this.queryPageList(changeVersionDetailDTO);
changeVersionDetailService.changeversionExport(iPageR.getData().getRecords(),response);
return R.status(Boolean.TRUE);
}
インターネット上の情報を検索したところ、MyBatis-Plus であることが分かり、ソースコードはページングインターセプタクラス PaginationInterceptor で説明されていたとのことですが、設定を修正したところ、PaginationInterceptor クラスが存在しないことが判明しました
。
mybatis-plus のバージョン 3.4/3.5 のアップデート以降、オリジナルの paginationInterceptor が正常に使用できないことが判明しました。最新の解決策は次のとおりです。
paginationInterceptor が paginationInnerInterceptor に変更されました
。
古いバージョンでは構成クラス MybatisPlusConfig が追加されました
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件(old)
* @author [email protected]
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setLimit(1000);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
新しいバージョンでは、構成クラス MybatisPlusConfig が追加されています
package com.software.dev.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.Collections;
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件 3.5.X
* @author [email protected]
*/
@Bean
public PaginationInnerInterceptor paginationInnerInterceptor() {
PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setMaxLimit(-1L);
paginationInterceptor.setDbType(DbType.MYSQL);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setOptimizeJoin(true);
return paginationInterceptor;
}
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.setInterceptors(Collections.singletonList(paginationInnerInterceptor()));
return mybatisPlusInterceptor;
}
}
spring.xml 設定 (まだ spring.xml を使用している場合)
<bean id="mybatisPlusInterceptor" class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
<property name="interceptors">
<list>
<ref bean="paginationInnerInterceptor"/>
</list>
</property>
</bean>
<bean id="paginationInnerInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor">
<constructor-arg name="dbType" value="H2"/>
</bean>