<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【深度精講】JFinal中的Ret和Kv工具類的區(qū)別,你用對(duì)了嗎?

      在JFinal中有兩個(gè)類Map的工具類,一個(gè)是有狀態(tài)的Ret,一個(gè)是無狀態(tài)的Kv,各種自己的應(yīng)用場(chǎng)景,你用對(duì)了嗎?

       

      Ret+kV_新版公眾號(hào)首圖_2018.11.13 (1).png

       

       

      下面我們從多個(gè)方面來探究一下,JFinal針對(duì)這兩個(gè)類的設(shè)計(jì):

       

      一、位置-com.jfinal.kit包

      image.png

       

      com.jfinal.kit包,JFinal里的核心工具類包,里面還有我們常用來判斷和處理字符串用的StrKit工具類。加載讀取配置文件用的PropKit工具類。用戶密碼Md5或者加鹽加密用的HashKit工具類等。

       

      總之,這個(gè)工具類包下面都是我們?nèi)粘i_發(fā)中常用的.(不接受反駁 (#^.^#))

       

      二、Kv.java詳解

      image.png

       

      Kv繼承HashMap,擁有HashMap的所有特性,你可以把Kv.java當(dāng)做一個(gè)更好用的HashMap

       

      場(chǎng)景使用:主要用來做參數(shù),傳遞參數(shù)

       

      image.png

       

       

      例1、下面來看一個(gè)Service里封裝的例子:

      image.png

       

      這是Service中封裝的一個(gè)根據(jù)關(guān)聯(lián)類型和關(guān)聯(lián)對(duì)象ID 刪除符合條件數(shù)據(jù)的一個(gè)數(shù)據(jù)庫(kù)操作。這里用Kv來構(gòu)造了刪除使用的參數(shù),是deleteBy(Kv params)這個(gè)方法的參數(shù)。

       

      例2、再來看一個(gè)JFinal微信開發(fā)中 對(duì)微信API的一個(gè)封裝:

       

      image.png

      這個(gè)場(chǎng)景下,使用Kv包裝作為接口的參數(shù),去調(diào)用微信API。

       

      例3、在Controller層 使用Kv把前端傳遞的參數(shù)封裝起來,更方便的調(diào)用非結(jié)構(gòu)化參數(shù),非Bean,非Model的參數(shù)傳遞

      image.png

       

      Controller.java中默認(rèn)提供了getKv()這個(gè)方法,如果前端傳遞的參數(shù)是一個(gè)Model,比如參數(shù)是user.id=1 user.name="張三" 此時(shí)我們后端可以使用getModel(User.class,"user")去獲取一個(gè)用model包裝的參數(shù)集合。如下圖案例所示:

      這里需要注意的是modelName.attrName這種形式,使用的attrName必須與數(shù)據(jù)表字段名完全一樣。

       

      image.png

       

      如果傳遞的參數(shù)與Model不同,但是也是user.id這種形式的參數(shù),一般我們后端可以封裝一個(gè)JavaBean,然后使用getBean(MyBean.class,"user") 也可以得到一組bean封裝的參數(shù)集合。如下圖所示:

       

      image.png

      注意:getBean方法用于支持傳統(tǒng)Java Bean,包括支持使用jfinal生成器生成了getter、setter方法的Model,頁(yè)面表單傳參時(shí)使用與setter方法相一致的attrName,而非數(shù)據(jù)表字段名

       

       

       

      除了以上兩種情況,如果前端一個(gè)表單提交的數(shù)據(jù),表單沒有設(shè)置域,直接傳遞的零散的表單項(xiàng)和值,則可以使用getKv()拿到所有前端提交過來的參數(shù),按照HashMap的形式包裝起來,方便后面使用。

       

      其實(shí):如果希望傳參時(shí)避免使用modelName前綴,可以使用空串作為modelName來實(shí)現(xiàn):getModel(User.class, ""); 這對(duì)開發(fā)純API項(xiàng)目非常有用。

       

      但是這里我們主要來探究Kv的方式:

      image.png

      Kv里提供了很多快速參數(shù)轉(zhuǎn)型的方法:在Service里可以快速根據(jù)參數(shù)的名字作為Kv里的Key獲取轉(zhuǎn)型數(shù)據(jù)值。

      image.png

      在Service里 我們可以使用這些方法,拿到我們需要的參數(shù)值。

      image.png

      特別注意:上面這個(gè)案例還能看出一個(gè)Ret和Kv的區(qū)別,就是一個(gè)主要作為參數(shù),一個(gè)主要作為返回值。

       

       

      三、Ret.java詳解

      image.png

      從上圖可以看出,Ret和Kv一樣 都是繼承了HashMap,是一個(gè)更好用的HashMap,唯一不同的是加入了狀態(tài)state主要是用來做返回值,用來返回操作處理的數(shù)據(jù)和狀態(tài)的。也用于服務(wù)器對(duì)客戶端請(qǐng)求響應(yīng)JSon數(shù)據(jù)通訊。

      image.png

       

      例1、Service層操作返回值,標(biāo)明返回的數(shù)據(jù)、狀態(tài)信息。

      image.png

      這里我列舉一個(gè)更新密碼的例子,拿到原密碼和新密碼之后做完判斷和更新后,根據(jù)最后執(zhí)行是否成功,返回一個(gè)Ret值,或者是success或者是error,這里具體看看封裝的Ret是這樣的:

       

      image.png

       

      調(diào)用了Ret里的fail和ok方法,設(shè)置了success和error分別對(duì)應(yīng)的兩個(gè)狀態(tài)。

       

      image.png

       

      最后會(huì)設(shè)置這個(gè)狀態(tài)名字是state值要么是ok要么是fail

      image.png

      那么,我們Controller層拿到這個(gè)service的返回值,如果前端是Ajax請(qǐng)求或者是作為API接口,用JSON數(shù)據(jù)格式通訊的話,可以直接使用renderJson(ret)了。

       

      image.png

       

      總結(jié)這個(gè)就是Ret作為Service返回值和服務(wù)器與客戶端做JSON數(shù)據(jù)通訊,返回的Json數(shù)據(jù)的典型應(yīng)用場(chǎng)景,跟Kv還是有區(qū)別的,就只在這個(gè)狀態(tài)上。

       

      希望,這個(gè)對(duì)比試驗(yàn)可以讓大家清晰的認(rèn)識(shí)同樣繼承了HashMap的兩個(gè)工具類,在應(yīng)用場(chǎng)景上的區(qū)別,用對(duì)JFinal,用好JFinal。

       

      如果您對(duì)次圖文教程有任何意見和改進(jìn)建議,請(qǐng)一定關(guān)注JFinal學(xué)院公眾號(hào):jfinalxueyuan 留言告訴我們。

       

      如果您在本文中有所收獲,想關(guān)注更多JFinal課程,也請(qǐng)一定關(guān)注JFinal學(xué)院公眾號(hào):jfinalxueyuan ,更多精彩課程,等著你。

       

      image.png

      posted on 2018-11-13 21:02  xiaomuedu  閱讀(1349)  評(píng)論(0)    收藏  舉報(bào)

      導(dǎo)航

      主站蜘蛛池模板: 久久精品a亚洲国产v高清不卡| 亚洲熟妇在线视频观看| 国产高清精品在线一区二区| 国产精品进线69影院| 宅男噜噜噜66在线观看| 亚洲欧美偷国产日韩| 日本丰满老妇bbb| 中文字幕制服国产精品| 国产超高清麻豆精品传媒麻豆精品| 在线播放深夜精品三级| 国产精品麻豆成人av电影艾秋| 国产av综合一区二区三区| 国产精品剧情亚洲二区| 影音先锋人妻啪啪av资源网站| 久热天堂在线视频精品伊人| 黄又色又污又爽又高潮| 日韩av无码中文无码电影| 熟女精品视频一区二区三区| 熟妇人妻久久精品一区二区| 国产一区二区三区不卡视频| 白水县| 一个人看的www视频免费观看| 久操热在线视频免费观看| 亚洲一区二区三区18禁| 亚洲av伊人久久综合性色| 色欲综合久久中文字幕网| 国产成人av性色在线影院| 在线看片免费人成视频久网| 极品少妇无套内射视频| 成年女人免费碰碰视频| 亚洲熟少妇一区二区三区| 亚洲东京色一区二区三区| 毛片无码免费无码播放| 激情综合网激情综合网五月| 亚洲人成电影网站色mp4| 亚洲精品乱码久久久久久不卡| 国产精品一区二区三区四区| 亚洲午夜理论无码电影| 国产色无码精品视频免费| 国产微拍一区二区三区四区| 亚洲女人天堂|