版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Mybatis執(zhí)行SQL時多了一個limit的問題及解決方法目錄報錯原因解決方式一:方式二:方式三:
報錯
checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenearLIMIT10atline5
代碼如下:
mapper層方法:
ListIntegerselect(@Param("pageNum")IntegerpageNum,@Param("pageSize")IntegerpageSize);
xml代碼:
selectid="select"resultType="java.lang.Integer"
SELECTid
FROMtest
LIMIT#{pageNum},#{pageSize}
/select
完整報錯如下:
;badSQLgrammar[];nestedexceptioniscom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenearLIMIT10atline5,位置信息:org.
springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
xy.$Proxy122.selectList(UnknownSource)
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
xy.$Proxy145.selectIdByDesc(UnknownSource)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
org.springframework.aop.framework.ReflectiveMethodIceed(ReflectiveMethodInvocation.java:157)
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
org.springframework.aop.framework.ReflectiveMethodIceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
xy.$Proxy146.select(UnknownSource)
br
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
org.springframework.web.servlet.FrameworkScessRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:231)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterCernalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
org.apache.coyote.AbstractProcessorLcess(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHcess(AbstractProtocol.java:861)
.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)
原因
查看執(zhí)行流程會發(fā)現:
Mybatis攔截器方法識別到配置中參數supportMethodsArguments為ture時會分頁處理。
源碼如下:
//是否支持接口參數來傳遞分頁參數,默認false
privatebooleansupportMethodsArguments=false;
/**
*Mybatis攔截器方法
*@paraminvocation攔截器入參
*@return返回執(zhí)行結果
*@throwsThrowable拋出異常
privateObject_processPage(Invocationinvocation)throwsThrowable{
finalObject[]args=invocation.getArgs();
Pagepage=null;
//支持方法參數時,會先嘗試獲取Page
if(supportMethodsArguments){
page=getPage(args);
//分頁信息
RowBoundsrowBounds=(RowBounds)args[2];
//支持方法參數時,如果page==null就說明沒有分頁條件,不需要分頁查詢
if((supportMethodsArgumentspage==null)
//當不支持分頁參數時,判斷LocalPage和RowBounds判斷是否需要分頁
||(!supportMethodsArgumentsSqlUtil.getLocalPage()==nullrowBounds==RowBounds.DEFAULT)){
returnceed();
}else{
//不支持分頁參數時,page==null,這里需要獲取
if(!supportMethodsArgumentspage==null){
page=getPage(args);
returndoProcessPage(invocation,page,args);
/**
*對象中獲取分頁參數
*@paramparams
*@return
publicstaticTPageTgetPageFromObject(Objectparams){
intpageNum;
intpageSize;
MetaObjectparamsObject=null;
if(params==null){
thrownewNullPointerException("無法獲取分頁查詢參數!");
if(hasRequestrequestClass.isAssignableFrom(params.getClass())){
try{
paramsObject=SystemMetaObject.forObject(getParameterMap.invoke(params,newObject[]{}));
}catch(Exceptione){
//忽略
}else{
paramsObject=SystemMetaObject.forObject(params);
if(paramsObject==null){
thrownewNullPointerException("分頁查詢參數處理失敗!");
ObjectorderBy=getParamValue(paramsObject,"orderBy",false);
booleanhasOrderBy=false;
if(orderBy!=nullorderBy.toString().length()0){
hasOrderBy=true;
try{
Object_pageNum=getParamValue(paramsObject,"pageNum",hasOrderByfalse:true);
Object_pageSize=getParamValue(paramsObject,"pageSize",hasOrderByfalse:true);
if(_pageNum==null||_pageSize==null){
Pagepage=newPage();
page.setOrderBy(or
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (2025年)泰安市岱岳區(qū)社工招聘筆試真題附答案
- 城市排水系統(tǒng)成本控制方案
- 城市水體生態(tài)修復方案
- 開業(yè)活動廣告方案策劃(3篇)
- 足浴主題活動方案策劃(3篇)
- 高級文案活動策劃方案(3篇)
- 小門頭施工方案(3篇)
- 茶館直播活動方案策劃(3篇)
- 展廳線下活動策劃方案(3篇)
- 兒童健康活動策劃方案(3篇)
- 藥物警戒基礎知識全員培訓
- 骨密度檢測的臨床意義
- 鉆探原始班報表試行版
- 腸菌移植治療炎癥性腸病專家共識(2025)解讀
- T/CPPC 1032-2021建筑生產資源分供商評價規(guī)范
- 機耕合同協(xié)議書范本簡單
- 送車免責合同協(xié)議書模板
- 外科學重癥監(jiān)測治療與復蘇
- 瓊脂糖-纖維素復合分離介質
- 早產兒家庭參與式護理
- 2025年招商引資項目可行性研究報告范文
評論
0/150
提交評論