亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

//示例代碼 請求路徑為當(dāng)前頁面路徑 "/product" 
<!-- 搜索框 get請求 根據(jù)商品名稱的關(guā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)我們要實現(xiàn)多條件搜索功能時,可以將搜索條件封裝為一個Map集合,再根據(jù)Map集合進行搜索

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>

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

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

在輸入中文關(guān)鍵字進行搜索時,可以使用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}}"
});

點擊查看大圖

搜索結(jié)果

總結(jié)

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

相關(guān)文章

  • 如何使用兩個棧實現(xiàn)隊列Java

    如何使用兩個棧實現(xiàn)隊列Java

    這篇文章主要介紹了如何使用兩個棧實現(xiàn)隊列Java,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java設(shè)計模式之責(zé)任鏈模式的示例詳解

    Java設(shè)計模式之責(zé)任鏈模式的示例詳解

    責(zé)任鏈模式是將鏈中的每一個節(jié)點看做是一個對象,每個節(jié)點處理的請求均不相同,且內(nèi)部自動維護下一個節(jié)點對象,當(dāng)一個請求從鏈?zhǔn)降氖锥伟l(fā)出時,會沿著鏈的路徑依次傳遞給每一個節(jié)點對象。本文將通過示例和大家詳細聊聊責(zé)任鏈模式,需要的可以參考一下
    2022-11-11
  • Spring Boot Admin 動態(tài)修改日志級別的方法步驟

    Spring Boot Admin 動態(tài)修改日志級別的方法步驟

    這篇文章主要介紹了Spring Boot Admin 動態(tài)修改日志級別的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • springcloud nacos的賦值均衡和動態(tài)刷新

    springcloud nacos的賦值均衡和動態(tài)刷新

    nacos是一個分布式的配置中心和注冊發(fā)現(xiàn)中心,這篇文章主要介紹了springcloud nacos的賦值均衡和動態(tài)刷新,需要的朋友可以參考下
    2024-05-05
  • 詳細分析Java內(nèi)部類——局部內(nèi)部類

    詳細分析Java內(nèi)部類——局部內(nèi)部類

    這篇文章主要介紹了Java局部內(nèi)部類的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java 內(nèi)部類的知識,感興趣的朋友可以了解下
    2020-08-08
  • Java基于外觀模式實現(xiàn)美食天下食譜功能實例詳解

    Java基于外觀模式實現(xiàn)美食天下食譜功能實例詳解

    這篇文章主要介紹了Java基于外觀模式實現(xiàn)美食天下食譜功能,較為詳細的講述了外觀模式的概念、原理并結(jié)合實例形似詳細分析了Java基于外觀模式實現(xiàn)美食天下食譜功能的具體操作步驟與相關(guān)注意事項,需要的朋友可以參考下
    2018-05-05
  • mybatis?plus常用注解的具體使用

    mybatis?plus常用注解的具體使用

    本文主要介紹了mybatis?plus常用注解的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java?C++題解leetcode769最多能完成排序的塊

    Java?C++題解leetcode769最多能完成排序的塊

    這篇文章主要為大家介紹了Java?C++題解leetcode769最多能完成排序的塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Java線程中的ThreadLocal詳細分析

    Java線程中的ThreadLocal詳細分析

    這篇文章主要介紹了Java線程中的ThreadLocal詳細分析,ThreadLocal?提供線程的局部變量,每個線程都可以通過?get()和?set()對局部變量進行操作而不會對其他線程的局部變量產(chǎn)生影響,實現(xiàn)了線程之間的數(shù)據(jù)隔離,需要的朋友可以參考下
    2023-09-09
  • 為什么Java單例模式一定要加?volatile

    為什么Java單例模式一定要加?volatile

    這篇文章主要介紹了為什么Java單例一定要加volatile,指的是為什么懶漢模式中的私有變量要加volatile?帶著疑問一起學(xué)習(xí)下面文章內(nèi)容吧
    2022-05-05

最新評論