spring mvc作為展示層的組件,從參數(shù)預(yù)處理,驗(yàn)證,攔截,渲染。無不考慮的細(xì)致入微,你所要的做的,只是接口實(shí)現(xiàn),切面接入,簡單配置。
今天我們以分頁功能展開來說明,如何把我們復(fù)雜的參數(shù)處理從控制器進(jìn)行剝離!
第一步
我們展示一個(gè)重量級(jí)的接口:HandlerMethodArgumentResolver
第一段紅色,表示在某個(gè)參數(shù)進(jìn)行了注解之后,是否啟用自定義的參數(shù)處理,其實(shí)就是一個(gè)標(biāo)識(shí)符
第二段紅色,是你的自定義的參數(shù)處理邏輯,里面可以封裝查詢參數(shù)的組裝邏輯
看一我的實(shí)現(xiàn)
重點(diǎn)看一下DataCriterias.getFromRequest()這個(gè)方法
主要分幾塊:
分頁參數(shù): sDisplayStart(起始位置),sDisplayLength(顯示條數(shù)),sEcho(頁數(shù))
查詢條件:columnDefs,某個(gè)字段的查詢,可以是完全匹配,也可以區(qū)間等等
排序條件:sortingColumnDefs,可以有多個(gè)排序條件,這個(gè)是有序的,看他的集合是LinkedList
最后組裝成一個(gè)DataCriterias
第二步:
XML配置,啟用我們自定義的參數(shù)預(yù)處理
其實(shí)就是針對(duì)RequestMappingHandlerAdapter把我們定義的DataCriteriasMethodArgumentResolver
注入進(jìn)去。
第三步:
控制器使用例子
這樣,控制器在得到分頁查詢對(duì)象之后(DataCriterias),直接調(diào)用service,把封裝好的對(duì)象傳遞過去,后面再處理。最后以一曲sugar來結(jié)尾吧,哈哈。
我的微信公眾號(hào),歡迎溝通學(xué)習(xí)。
