最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)搜索功能代碼詳解

 更新時(shí)間:2017年12月20日 08:54:08   作者:hpu145  
這篇文章主要介紹了Java實(shí)現(xiàn)搜索功能代碼詳解,實(shí)現(xiàn)思路小編給大家介紹的非常詳細(xì),需要的朋友可以參考下

首先,我們要清楚搜索框中根據(jù)關(guān)鍵字進(jìn)行條件搜索發(fā)送的是Get請求,并且是向當(dāng)前頁面發(fā)送Get請求

//示例代碼 請求路徑為當(dāng)前頁面路徑 "/product" 
<!-- 搜索框 get請求 根據(jù)商品名稱的關(guān)鍵字進(jìn)行搜索-->
<form action="/product" class="form-inline pull-left" >
  <input type="text" name="productName" placeholder="商品名稱" class="form-control" value="${param.productName}">
  <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</form>

當(dāng)我們要實(shí)現(xiàn)多條件搜索功能時(shí),可以將搜索條件封裝為一個(gè)Map集合,再根據(jù)Map集合進(jìn)行搜索

Controller層代碼:

@GetMapping("/product")
  public String list(@RequestParam(required = false,defaultValue = "1",name = "p")Integer pageNo,
            @RequestParam(required = false,defaultValue = "")String productName,
            @RequestParam(required = false,defaultValue = "")String place,
            @RequestParam(required = false,defaultValue = "")Integer typeId,
            @RequestParam(required = false,defaultValue = "")BigDecimal minPrice,
            @RequestParam(required = false,defaultValue = "")BigDecimal maxPrice,
            Model model) {
    Map<String,Object> searchParam = new HashMap<>();
    searchParam.put("productName",productName);
    searchParam.put("place",place);
    searchParam.put("typeId",typeId);
    searchParam.put("minPrice",minPrice);
    searchParam.put("maxPrice",maxPrice);
    PageInfo<Kaola> pageInfo = kaolaService.findByPageNo(pageNo,searchParam);
    model.addAttribute("pageInfo",pageInfo);
    return "product/list";
  }

業(yè)務(wù)層代碼:

public PageInfo<Kaola> findByPageNo(Integer pageNo, Map<String, Object> searchParam) {
    PageHelper.startPage(pageNo,10);
    List<Kaola> kaolaList = kaolaMapper.findBySearchParamWithType(searchParam);
    return new PageInfo<>(kaolaList);
}

MyBatis中的mapper.xml:

<select id="findBySearchParamWithType" resultType="com.kaishengit.entity.Kaola">
    SELECT
      kaola.*, kaola_type.id AS 'kaolaType.id',
      kaola_type.type_name AS 'kaolaType.typeName',
      parent_id AS 'kaolaType.parentId'
    FROM
      kaola
    INNER JOIN kaola_type ON kaola.type_id = kaola_type.id
    <where>
      <if test="productName != null and productName != ''">
        kaola.product_name LIKE concat('%',#{productName},'%')
      </if>
      <if test="place != null and place != ''">
        and kaola.place = #{place}
      </if>
      <if test="typeId != null and typeId != ''">
        and kaola.type_id = #{typeId}
      </if>
      <if test="minPrice !=null and minPrice != ''">
        <![CDATA[ and kaola.price >= #{minPrice} ]]>
      </if>
      <if test="maxPrice !=null and maxPrice != ''">
        <![CDATA[ and kaola.price <= #{maxPrice} ]]>
      </if>
    </where>
    ORDER BY kaola.id DESC
</select>

這樣,就可以從前端到后端實(shí)現(xiàn)多條件搜索功能了。我們還會遇到這樣一種情況,在輸入搜索條件時(shí),顯示列表會不斷自動刷新,這里其實(shí)用到了Ajax的相關(guān)內(nèi)容,在輸入的過程中,會不斷發(fā)出Ajax請求,然后刷新頁面。

<input type="text" name="productName" placeholder="商品名稱" class="form-control" value="${param.productName}">
value="${param.productName}"
是從請求url的參數(shù)中獲取值,實(shí)現(xiàn)在輸入關(guān)鍵字搜索后刷新頁面顯示關(guān)鍵字這一功能,直接上圖:

在輸入中文關(guān)鍵字進(jìn)行搜索時(shí),可以使用encodeURIComponent解決url路徑顯示中文亂碼問題:

//分頁
$('#pagination-demo').twbsPagination({
  totalPages: ${pageInfo.pages},
  visiblePages: 10,
  first:'首頁',
  last:'末頁',
  prev:'上一頁',
  next:'下一頁',
  href:"?productName="+encodeURIComponent('${param.productName}')+"&place="+encodeURIComponent('${param.place}')
  + "&typeId=${param.typeId}&minPrice=${param.minPrice}&maxPrice=${param.maxPrice}&p={{number}}"
});

點(diǎn)擊查看大圖

搜索結(jié)果

總結(jié)

以上所述是小編給大家介紹的Java實(shí)現(xiàn)搜索功能代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java獲取ip地址與網(wǎng)絡(luò)接口的方法示例

    java獲取ip地址與網(wǎng)絡(luò)接口的方法示例

    這篇文章主要給大家介紹了關(guān)于利用java如何獲取ip地址與網(wǎng)絡(luò)接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 告訴你為什么?ThreadLocal?可以做到線程隔離

    告訴你為什么?ThreadLocal?可以做到線程隔離

    對于 ThreadLocal 我們都不陌生,它的作用如同它的名字用于存放線程本地變量,這篇文章主要介紹了為什么?ThreadLocal?可以做到線程隔離,需要的朋友可以參考下
    2022-07-07
  • java中讀取配置文件中數(shù)據(jù)的具體方法

    java中讀取配置文件中數(shù)據(jù)的具體方法

    java中讀取配置文件中數(shù)據(jù)的具體方法,需要的朋友可以參考一下
    2013-06-06
  • JAVA設(shè)計(jì)模式之單例模式詳解

    JAVA設(shè)計(jì)模式之單例模式詳解

    大家好,本篇文章主要講的是JAVA設(shè)計(jì)模式之單例模式詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • java執(zhí)行shell命令及日志收集避坑指南分享

    java執(zhí)行shell命令及日志收集避坑指南分享

    這篇文章主要介紹了java執(zhí)行shell命令及日志收集避坑指南,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • JavaSE實(shí)現(xiàn)電影院系統(tǒng)

    JavaSE實(shí)現(xiàn)電影院系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了JavaSE實(shí)現(xiàn)電影院系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 解決java 命令行亂碼的問題

    解決java 命令行亂碼的問題

    這篇文章主要介紹了解決java 命令行亂碼的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 詳解SpringBoot時(shí)間參數(shù)處理完整解決方案

    詳解SpringBoot時(shí)間參數(shù)處理完整解決方案

    這篇文章主要介紹了詳解SpringBoot時(shí)間參數(shù)處理完整解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Spring Cloud Gateway 如何修改HTTP響應(yīng)信息

    Spring Cloud Gateway 如何修改HTTP響應(yīng)信息

    這篇文章主要介紹了Spring Cloud Gateway 修改HTTP響應(yīng)信息的方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 什么是Spring Boot

    什么是Spring Boot

    Spring是一個(gè)非常受歡迎的Java框架,它用于構(gòu)建web和企業(yè)應(yīng)用。本文介紹將各種Spring的配置方式,幫助您了解配置Spring應(yīng)用的復(fù)雜性
    2017-08-08

最新評論

扎囊县| 久治县| 墨玉县| 襄城县| 雷州市| 鹤庆县| 旌德县| 凭祥市| 额济纳旗| 天峻县| 石景山区| 宜阳县| 曲阜市| 大新县| 丹寨县| 辰溪县| 荆州市| 灌云县| 林州市| 娄底市| 诸城市| 栾川县| 突泉县| 高平市| 察隅县| 天等县| 林西县| 昌吉市| 连平县| 津南区| 湘潭市| 土默特左旗| 和田县| 仙游县| 特克斯县| 神农架林区| 怀来县| 海口市| 大埔区| 漯河市| 光山县|