1. 程式人生 > >springboot分頁條件查詢java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pageh

springboot分頁條件查詢java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pageh

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());
	}