国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SSM框架條件分頁(yè)查詢(xún)研究與實(shí)現(xiàn)

2019-03-26 03:22權(quán)
關(guān)鍵詞:插件框架對(duì)象

唐 權(quán)

(四川職業(yè)技術(shù)學(xué)院,遂寧 629000)

0.引言

SSM(Spring+SpringMVC+Mybatis)框 架 是一個(gè)非常優(yōu)秀的Java EE輕量級(jí)框架,應(yīng)用于Java EE企業(yè)級(jí)項(xiàng)目的開(kāi)發(fā)中,成為當(dāng)前主流Web應(yīng)用程序開(kāi)發(fā)框架。在Web應(yīng)用項(xiàng)目中數(shù)據(jù)維護(hù)是基礎(chǔ)性工作,具有非常重要的作用,也是工作量較大的環(huán)節(jié),主要包括對(duì)數(shù)據(jù)的查詢(xún)、增加、刪除與修改。項(xiàng)目開(kāi)發(fā)中如何減輕這些工作量,實(shí)現(xiàn)方式與標(biāo)準(zhǔn)統(tǒng)一,節(jié)省開(kāi)發(fā)時(shí)間,提高工作效率具有重要的作用。本文就數(shù)據(jù)維護(hù)中的條件分頁(yè)查詢(xún),把PageHelper技術(shù)整合到SSM框架中,對(duì)SSM框架以最小的侵入,實(shí)現(xiàn)快速分頁(yè)查詢(xún)。

1.SSM框架概述

SSM框架包括三個(gè)部分,分別是Spring技術(shù)、SpringMVC技術(shù)、Mybatis技術(shù)。Spring技術(shù)是整個(gè)框架的核心,通過(guò)Spring依賴(lài)注入模式,把SpringMVC與MyBatis框架整合在一起。其中SpringMVC主要實(shí)現(xiàn)模塊的 MVC(Model View Controller)功能,負(fù)責(zé)把用戶的請(qǐng)求根據(jù)映射關(guān)系提交到對(duì)應(yīng)的控制器;MyBatis實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層的功能,通過(guò)ORM映射與數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,讀取數(shù)據(jù)庫(kù)的數(shù)據(jù)或保存數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)持久化;業(yè)務(wù)邏輯層也叫服務(wù)層,實(shí)現(xiàn)應(yīng)用程序的業(yè)務(wù)邏輯,向上給控制層的提供服務(wù),向下調(diào)用數(shù)據(jù)訪問(wèn)層和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互。SSM框架整合后數(shù)據(jù)查詢(xún)業(yè)務(wù)流程各模塊對(duì)象序列圖如圖1所示。

第一.用戶通過(guò)Browser發(fā)送查詢(xún)請(qǐng)求,被SpringMVC框架的DispatcherServlet攔截,通過(guò)請(qǐng)求映射關(guān)系,轉(zhuǎn)到對(duì)應(yīng)的控制器Con

圖1 SSM整合框架查詢(xún)業(yè)務(wù)序列圖

第二.Controller根據(jù)請(qǐng)求的url找到對(duì)應(yīng)的處理方法,在方法中調(diào)用服務(wù)層Service對(duì)應(yīng)的方法查詢(xún)數(shù)據(jù)。

第三.Service層查詢(xún)數(shù)據(jù)方法又去調(diào)用數(shù)據(jù)訪問(wèn)層Dao層對(duì)應(yīng)的數(shù)據(jù)查詢(xún)接口。

第四.Dao層接口最終通過(guò)MyBatis提供的ORM映射,在數(shù)據(jù)庫(kù)中完成查詢(xún)業(yè)務(wù),并返回查詢(xún)結(jié)果對(duì)象信息。

第五.根據(jù)各層對(duì)象的調(diào)用關(guān)系,最終會(huì)把查詢(xún)結(jié)果封裝在對(duì)象列表中,返回到控制層Controller,最終到瀏覽器顯示查詢(xún)結(jié)果。

2.SSM條件查詢(xún)的實(shí)現(xiàn)

本節(jié)將以用戶管理實(shí)例來(lái)展現(xiàn)條件查詢(xún)業(yè)務(wù)的在SSM框架中具體實(shí)現(xiàn)過(guò)程,其中用戶的數(shù)據(jù)結(jié)構(gòu)是User(id,name,password,department)。

2.1 Dao數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)

Dao層的實(shí)現(xiàn)包括三個(gè)過(guò)程,其一編寫(xiě)User對(duì)象用來(lái)封裝查詢(xún)用戶信息,其二是編寫(xiě)數(shù)據(jù)查詢(xún)?cè)L問(wèn)接口,其三是配置接口映射文件實(shí)現(xiàn)接口的中數(shù)據(jù)查詢(xún)。

第一.創(chuàng)建User類(lèi):根據(jù)用戶表的信息及字段,定義用戶對(duì)象User類(lèi)及其屬性和getters、setters方法,為了簡(jiǎn)便可以把字段名與對(duì)象的屬性名定義成相同名字。

第二.創(chuàng)建用戶條件查詢(xún)接口:創(chuàng)建用戶接口類(lèi) UserDao,定義查詢(xún)接口findUserList,其中返回值為User對(duì)象列表,查詢(xún)參數(shù)也是User封裝的查詢(xún)用戶各字段的屬性值。

第三.創(chuàng)建配置接口映射文件:創(chuàng)建映射文件UserDao.xml,其中namespace屬性與接口類(lèi)名稱(chēng)對(duì)應(yīng),select元素對(duì)應(yīng)執(zhí)行查詢(xún)sql語(yǔ)句,id屬性對(duì)應(yīng)接口查詢(xún)用戶方法名,parameterType對(duì)應(yīng)接口方法中參數(shù)類(lèi)型,resultType屬性對(duì)應(yīng)查詢(xún)返回結(jié)果類(lèi)型。MyBatis框架會(huì)通過(guò)ORM映射把查詢(xún)結(jié)果的記錄轉(zhuǎn)換成User對(duì)象放在列表中。接口方法的參數(shù)User中封裝查詢(xún)條件,通過(guò)if子句測(cè)試每一個(gè)查詢(xún)條件,如何不為空就加入到查詢(xún)條件的sql語(yǔ)句中,關(guān)鍵代碼如下:

2.2 Service服務(wù)層實(shí)現(xiàn)

Service層也叫業(yè)務(wù)邏輯層,在服務(wù)層創(chuàng)建服務(wù)類(lèi)UserService,注入數(shù)據(jù)訪問(wèn)層UserDao接口,定義服務(wù)層查詢(xún)業(yè)務(wù)的方法find-UserList,在方法中調(diào)用數(shù)據(jù)訪問(wèn)層UserDao的用戶查詢(xún)接口實(shí)現(xiàn)數(shù)據(jù)查詢(xún),返回結(jié)果為User對(duì)象列表供控制層調(diào)用。主要實(shí)現(xiàn)代碼如下:

關(guān)鍵說(shuō)明:

(1).@Service注解是表示服務(wù)類(lèi)會(huì)被Spring框架掃描并裝配成Bean對(duì)象;

(2).@Transactional注解表示在服務(wù)層所有的方法都會(huì)被納入SSM框架的事務(wù)管理器管理,保證服務(wù)層方法的原子性;

(3).@Autowired注解表示服務(wù)層類(lèi)對(duì)數(shù)據(jù)訪問(wèn)層接口UserDao的依賴(lài)性,框架會(huì)通過(guò)類(lèi)型自動(dòng)裝配成Bean并注入到當(dāng)前類(lèi)的Bean中。

2.3 Controller控制層實(shí)現(xiàn)

SSM框架中的Controller層由程序員開(kāi)發(fā),通過(guò)SpringMvc框架的DispathcerServlet處理把客戶請(qǐng)求轉(zhuǎn)到控制層,其關(guān)鍵代碼如下:

關(guān)鍵代碼說(shuō)明:

(1)@Controller注解表示該控制層類(lèi)被Spring框架掃描裝配成控制器的Bean對(duì)象;

(2)@Autowired按類(lèi)型裝配服務(wù)層的userService為Bean對(duì)象,自動(dòng)注入到控制器;

(3)@RequestMapping注解表示查詢(xún)用戶的url映射為findUserList,即瀏覽器發(fā)出的以findUserList為后綴的請(qǐng)求會(huì)映射到當(dāng)前控制器的findUserSeletive方法進(jìn)行處理。

(4)findUserSelective方法的參數(shù)map封裝方法查詢(xún)結(jié)果數(shù)據(jù)到表示層;參數(shù)user封裝的查詢(xún)條件信息,供查詢(xún)使用。

(5)通過(guò)返回字符串“findUserSelective”,SpringMVC框架會(huì)解析到指定路徑下對(duì)應(yīng)的Jsp頁(yè)面顯示查詢(xún)結(jié)果。

圖2 條件查詢(xún)結(jié)果

2.4 表示層的實(shí)現(xiàn)

表示層用于顯示查詢(xún)結(jié)果數(shù)據(jù),主要包括條件查詢(xún)表單與查詢(xún)結(jié)果顯示兩部分。

查詢(xún)表單封裝查詢(xún)關(guān)鍵字段,為了方便查詢(xún)參數(shù)自動(dòng)封裝成user對(duì)象,要求表單查詢(xún)條件輸入項(xiàng)的name屬性與User類(lèi)的屬性名相同,表單提交后就會(huì)自動(dòng)封裝到成user對(duì)象,作為控制層的輸入?yún)?shù)。查詢(xún)結(jié)果通過(guò)標(biāo)簽庫(kù)〈c:forEach items="${lists}"var="user"〉把控制器map參數(shù)中的列表lists通過(guò)EL表達(dá)式${lists}循環(huán)取出來(lái)存放在變量user中,然后再通過(guò)EL表達(dá)式${user.id}、${user.name}、${user.department}等方式在表格中顯示出來(lái)。通過(guò)以上各層的操作,能夠正確在SSM框架中實(shí)現(xiàn)數(shù)據(jù)的條件查詢(xún)業(yè)務(wù),執(zhí)行結(jié)果如圖2所示。

3.SSM框架整合分頁(yè)查詢(xún)模塊

上節(jié)的SSM框架實(shí)現(xiàn)了條件查詢(xún)業(yè)務(wù),但是還沒(méi)有完成分頁(yè)功能,如果查詢(xún)結(jié)果數(shù)據(jù)量較大,必須進(jìn)行分頁(yè)操作,就是在SSM框架上整合MyBatis的分頁(yè)插件PageHelper,快捷實(shí)現(xiàn)查詢(xún)數(shù)據(jù)分頁(yè)功能。

3.1 分頁(yè)插入的引入

MyBatis的分頁(yè)插件包括兩個(gè)軟件包,分別是pagehelper-4.1.4.jar與jsqlparser-0.9.5.jar。不同的版本號(hào)可以通過(guò)網(wǎng)絡(luò)平臺(tái)下載,下載后導(dǎo)入到項(xiàng)目的WEB-INF下的lib文件夾中,然后在SSM框架的MyBatis-config.xml文件中進(jìn)行插件配置。

配置文件中兩個(gè)最主要點(diǎn)必須配置:其一是通過(guò)“interceptor”屬性在框架中引入Page-Helper插件類(lèi);其二是通過(guò)屬性"dialect"配置底層數(shù)據(jù)庫(kù)的類(lèi)型,本文項(xiàng)目中使用的是mysql數(shù)據(jù)庫(kù)。其它屬性是對(duì)分頁(yè)其它功能進(jìn)行規(guī)范可參考說(shuō)明文檔進(jìn)行選擇配置。

3.2 分頁(yè)功能實(shí)現(xiàn)

配置好分頁(yè)插件后就是在項(xiàng)目中使用插件完成分頁(yè)工作,該項(xiàng)工作主要集中在控制層與表示層兩個(gè)方面。

(1)控制層分頁(yè)實(shí)現(xiàn):控制層查詢(xún)方法處作如下改變:其一是修改控制層查詢(xún)方法中的參數(shù),加入頁(yè)號(hào)pageNum與頁(yè)面記錄數(shù)pageSize;其二是在執(zhí)行查詢(xún)之間加入PageHelper.startPage(pageNum,pageSize)語(yǔ)句;其三是把查詢(xún)結(jié)果封裝成分頁(yè)信息PageInfo對(duì)象;其四是通過(guò)map參數(shù)封裝查詢(xún)條件與分頁(yè)信息到表示層,主要代碼如下:

(2)表示層的實(shí)現(xiàn):表示層改變主要是在表格下面增加分頁(yè)控件,并綁定分頁(yè)請(qǐng)求地址和請(qǐng)求參數(shù),分頁(yè)請(qǐng)求地址與查詢(xún)地址相同,分頁(yè)請(qǐng)求參數(shù)包括查詢(xún)條件與頁(yè)面信息,查詢(xún)條件從返回的map對(duì)象的user屬性中讀取,頁(yè)面參數(shù)通過(guò)返回的PageInfo對(duì)象成員中獲取。其中PageInfo包含 了 成 員 有 :firstPage、prePage、nextPage、lastPage、pages、total 等,分別封裝了首頁(yè)、前一頁(yè)、下一頁(yè)、最后頁(yè)的頁(yè)號(hào)和頁(yè)面總數(shù)、記錄總數(shù)可以作為頁(yè)面導(dǎo)航的參數(shù)。如:下一頁(yè)的導(dǎo)航請(qǐng)求可寫(xiě)為 〈a href="findUserList?pageNum=${page.nextPage}&pageSize=${page.page-Size}&id=${user.id}&name=${user.name}&department=${user.department}〉 下一頁(yè)〈/a〉這樣的形式。

通過(guò)控制層與表示層的簡(jiǎn)單改變,就可以簡(jiǎn)潔實(shí)現(xiàn)數(shù)據(jù)的條件查詢(xún)分頁(yè)任務(wù),而且不會(huì)改變服務(wù)層與數(shù)據(jù)訪問(wèn)層的任何代碼,以最小的侵入完成了條件查詢(xún)分頁(yè)功能,分頁(yè)后的效果如圖3所示。

圖3 分頁(yè)條件查詢(xún)結(jié)果

4.結(jié)束語(yǔ)

本文應(yīng)用于SSM框架,從數(shù)據(jù)訪問(wèn)層、服務(wù)層、控制層、表示層來(lái)構(gòu)建了表單查詢(xún)功能的實(shí)現(xiàn)過(guò)程,并在此基礎(chǔ)上加入MyBatis的分頁(yè)插件PageHelper,通過(guò)對(duì)控制層與表示層的簡(jiǎn)單的改造,快速實(shí)現(xiàn)了數(shù)據(jù)維護(hù)中的綜合查詢(xún)分頁(yè)功能,為實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程提供了一種較的解決方案。

猜你喜歡
插件框架對(duì)象
框架
涉稅刑事訴訟中的舉證責(zé)任——以納稅人舉證責(zé)任為考察對(duì)象
K-框架和緊K-框架的算子擾動(dòng)的穩(wěn)定性
判斷電壓表測(cè)量對(duì)象有妙招
廣義框架的不相交性
自編插件完善App Inventor與樂(lè)高機(jī)器人通信
攻略對(duì)象的心思好難猜
基于jQUerY的自定義插件開(kāi)發(fā)
區(qū)間對(duì)象族的可鎮(zhèn)定性分析
關(guān)于原點(diǎn)對(duì)稱(chēng)的不規(guī)則Gabor框架的構(gòu)造
广德县| 东方市| 昂仁县| 南乐县| 宝坻区| 永泰县| 永兴县| 黑河市| 安仁县| 红桥区| 开平市| 汉中市| 白城市| 沂源县| 江永县| 左贡县| 乌拉特前旗| 哈巴河县| 霍山县| 德保县| 内乡县| 乐昌市| 西平县| 全南县| 宝山区| 天峻县| 浑源县| 牟定县| 砀山县| 格尔木市| 罗山县| 丰台区| 始兴县| 翁牛特旗| 黄石市| 贡觉县| 威宁| 乌海市| 杭锦旗| 平安县| 廊坊市|