springboot分頁條件查詢java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pageh
阿新 • • 發佈:2018-12-13
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pagehelper.Page at com.boku.www.service.impl.ProjectDataServiceImpl.findPage(ProjectDataServiceImpl.java:147) ~[classes/:na] at com.boku.www.controller.ProjectDataController.search(ProjectDataController.java:109) ~[classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) ~[tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.29.jar:8.5.29] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.29.jar:8.5.29] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.29.jar:8.5.29] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
原始碼
System.out.println(projectDataMapper.selectByExample(example));
輸出結果:
[TProjectData{id=42, managementCompany=‘杭州科技局’, subject=‘杭州市市第一批科技計劃安排專案’, projectNum=‘2A01005’, projectName=‘萬噸級膜法海水淡化單機設計與系統整合技術 ‘, projectKidcat=‘重點專案’, category=‘軟科學研究專案’, subject1Id=‘310’, subject2Id=’’, subject3Id=’’, projectSatrtTime=Sun Jan 01 00:00:00 CST 2012, area=‘杭州市’, organizer=‘杭州市’, projectLeader=‘高壽蘭’, teamMembers='楊波,譚永文,潘巧明,白海浪,鄭巨集林,戴誠懌,傅紅兵,葛光設,金偉劍 ', prizeCategory=‘杭州市科技進步獎’, prizeName=‘一等獎’, resultCategory=‘專利’, resultCategoryId=‘3’, resultName=‘具體名稱’, resultTime=Tue Jan 01 00:00:00 CST 2013}]
Page page= (Page)projectDataMapper.selectByExample(example);
在這裡就出現型別轉換異常了?
System.out.println(page.getTotal());
System.out.println( page.getResult());
<!--分頁外掛--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.0</version> </dependency>
2.在 properties配置檔案中配置
#pagehelper分頁外掛配置
pagehelper.helperDialect=postgresql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
3.在啟動類裡配置
@SpringBootApplication
// mapper 介面類掃描包配置
//@MapperScan("com.boku.www.mapper)
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
//配置mybatis的分頁外掛pageHelper
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("offsetAsPageNum","true");
properties.setProperty("rowBoundsWithCount","true");
properties.setProperty("reasonable","true");
properties.setProperty("dialect","postgresql");//配置postgresql資料庫的方言支援Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六種資料庫
pageHelper.setProperties(properties);
return pageHelper;
}
}
就可以運行了
控制層
@RequestMapping(value = "/search", method = RequestMethod.POST)
public PageResult search(@RequestBody TProjectData projectData, int page, int rows ){
return projectDataService.findPage(projectData, page, rows);
}
服務層
public PageResult findPage(TProjectData projectData, int pageNum, int pageSize);
@Override
public PageResult findPage(TProjectData projectData, int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
TProjectDataExample example=new TProjectDataExample();
TProjectDataExample.Criteria criteria = example.createCriteria();
if(projectData!=null){
if(projectData.getManagementCompany()!=null && projectData.getManagementCompany().length()>0){
criteria.andManagementCompanyLike("%"+projectData.getManagementCompany()+"%");
}
if(projectData.getSubject()!=null && projectData.getSubject().length()>0){
criteria.andSubjectLike("%"+projectData.getSubject()+"%");
}
if(projectData.getProjectNum()!=null && projectData.getProjectNum().length()>0){
criteria.andProjectNumLike("%"+projectData.getProjectNum()+"%");
}
if(projectData.getProjectName()!=null && projectData.getProjectName().length()>0){
criteria.andProjectNameLike("%"+projectData.getProjectName()+"%");
}
if(projectData.getProjectKidcat()!=null && projectData.getProjectKidcat().length()>0){
criteria.andProjectKidcatLike("%"+projectData.getProjectKidcat()+"%");
}
if(projectData.getCategory()!=null && projectData.getCategory().length()>0){
criteria.andCategoryLike("%"+projectData.getCategory()+"%");
}
if(projectData.getSubject1Id()!=null && projectData.getSubject1Id().length()>0){
criteria.andSubject1IdLike("%"+projectData.getSubject1Id()+"%");
}
if(projectData.getSubject2Id()!=null && projectData.getSubject2Id().length()>0){
criteria.andSubject2IdLike("%"+projectData.getSubject2Id()+"%");
}
if(projectData.getSubject3Id()!=null && projectData.getSubject3Id().length()>0){
criteria.andSubject3IdLike("%"+projectData.getSubject3Id()+"%");
}
if(projectData.getArea()!=null && projectData.getArea().length()>0){
criteria.andAreaLike("%"+projectData.getArea()+"%");
}
if(projectData.getOrganizer()!=null && projectData.getOrganizer().length()>0){
criteria.andOrganizerLike("%"+projectData.getOrganizer()+"%");
}
if(projectData.getProjectLeader()!=null && projectData.getProjectLeader().length()>0){
criteria.andProjectLeaderLike("%"+projectData.getProjectLeader()+"%");
}
if(projectData.getTeamMembers()!=null && projectData.getTeamMembers().length()>0){
criteria.andTeamMembersLike("%"+projectData.getTeamMembers()+"%");
}
if(projectData.getPrizeCategory()!=null && projectData.getPrizeCategory().length()>0){
criteria.andPrizeCategoryLike("%"+projectData.getPrizeCategory()+"%");
}
if(projectData.getPrizeName()!=null && projectData.getPrizeName().length()>0){
criteria.andPrizeNameLike("%"+projectData.getPrizeName()+"%");
}
if(projectData.getResultCategory()!=null && projectData.getResultCategory().length()>0){
criteria.andResultCategoryLike("%"+projectData.getResultCategory()+"%");
}
if(projectData.getResultCategoryId()!=null && projectData.getResultCategoryId().length()>0){
criteria.andResultCategoryIdLike("%"+projectData.getResultCategoryId()+"%");
}
if(projectData.getResultName()!=null && projectData.getResultName().length()>0){
criteria.andResultNameLike("%"+projectData.getResultName()+"%");
}
}
//分頁查詢
List list = projectDataMapper.selectByExample(example);
PageInfo<TProjectData> pageInfo = new PageInfo<TProjectData>(list);
;
return new PageResult(pageInfo.getTotal(), pageInfo.getList());
}