天天看點

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

今天是劉小愛自學Java的第110天。

感謝你的觀看,謝謝你。

話不多說,開始今天的學習:

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

事先說明:關于今天的搜尋功能實作。

并沒有使用到反向索引這樣的主流搜尋技術,就一個普通的模糊查詢。

在此之前,先學一個小的知識點,sql語句動态拼接。

一、sql語句動态拼接

我們編寫sql語句,一般都是通過預編譯查詢,使用問号這個通配符”?“

但是有的時候會存在某個參數不存在的情況,比如說這一次查詢前端傳來了3個參數,下一次卻隻傳了2個參數。

面對這個問題,那該怎麼辦呢?

就需要使用到sql語句的動态拼接了,代碼編寫如下:

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

①sql語句中的cid這個參數是不确定的,有時有,有時可能沒有。

②StringBuilder的使用

先将sql語句中确定的部分存放到StringBuilder中,再建立一個集合存放參數。

③對cid做出判斷

如果cid不為空且存在,就在sql語句中拼接“ and cid = ?”,同時将cid存入參數集合中。

④拼接cid後面其它的參數

在sql語句中拼接“ limit ?,?”,然後将另外兩個固定參數存入集合。

注意:sql拼接過程中空格不要忘記了,總之要保證拼接後的sql要和①中的一樣,通過debug可以檢視。

⑤查詢資料

将動态存放sql語句的StringBuilder轉換成字元串,将存放參數的集合轉換成數組,再使用jdbcTemp查詢。

二、前背景代碼編寫

1業務分析

我們要找到搜尋框所在的靜态頁面,如下圖:

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

要解決兩個問題:

①是我們要給搜尋綁定一個點選事件,點選之後就會跳轉到route_list頁面,展示查詢到的對應資料。

綁定的函數為queryByRname()

②我們要擷取搜尋框中輸入的資料。

這裡就可以通過層級選擇器$(“.search input”)選中搜尋框對應的标簽。

2前端代碼實作

定義函數queryByRname()

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

①擷取搜尋框中的内容

使用層級選擇器,調用jQuery的val()方法可以擷取對應标簽中的資料,這裡也就是搜尋框。

②跳轉route_list.html頁面

location.href即可跳轉對應頁面。同時将rname作為參數傳遞給背景。

③route_list.html頁面代碼

在②中跳轉是攜帶了一個參數,自然是需要擷取該參數,再将其增加到伺服器請求參數中。

其中要将參數進行解碼,因為浏覽器會自動将在搜尋框中輸入的資料進行編碼。

使用decodeURL()功能即可完成編碼。

3背景接受該參數

在已有的業務邏輯基礎上添加參數即可

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

隻需要在web層中增加擷取rname這個資料的代碼。

同時在将其作為參數傳遞給service層,而service層也增加該參數去dao層查詢。

其它代碼都不用改變,隻是增加了一個rname參數。

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

同樣的道理,在dao層中也動态拼接sql查詢語句。

總之可以先寫出完整的sql語句,再動态拼接rname這個參數。

檢查方式就可以通過debug來判斷sql語句拼接的是否正确。

三、搜尋框資料回填

我們在搜尋框中輸入資訊之後,點選搜尋,搜尋框的内容會消失。

而事實上都應該還會存在,那該怎麼辦呢?

就需要考慮到資料回填:

android 模糊查詢搜尋框_Java項目實戰第11天:搜尋功能的實作一、sql語句動态拼接二、前背景代碼編寫三、搜尋框資料回填最後

大緻的一個思路是:

擷取搜尋框中的資料後,将其重新設定到對應的标簽中。

其中值得注意的是:

參數要解碼,以及要綁定頁面加載事件。

最後

謝謝你的觀看。

如果可以的話,麻煩幫忙點個贊,謝謝你。