今天是刘自学Java的第110天。
谢谢观看,谢谢。

事不宜迟,开始今天的学习吧:
提前说明:关于今日搜索功能的实现。
没有使用倒排索引等主流搜索技术,只是普通的模糊查询。
在此之前,学习一个小知识点,sql语句的动态拼接。
1.sql语句的动态拼接
当我们编写sql语句时,我们通常预编译查询并使用通配符问号“?”
但是,有时参数并不存在。比如这次查询前端发了三个参数,下次只发了两个参数。
面对这个问题,我们该怎么办?
你需要使用sql语句的动态拼接。代码编写如下:
①①SQL语句中的参数cid是不确定的,有时有,有时可能没有。
②StringBuilder的使用
首先,在StringBuilder中存储sql语句的确定部分,然后创建一个集合来存储参数。
③对cid做出判断。
如果cid不是空并且存在,请在sql语句中拼接"和cid = ",并将cid存储在参数集中。
④拼接cid背后的其他参数
在sql语句中拼接“limit”,然后将另外两个固定参数存储到集合中。
注意:不要忘记sql拼接过程中的空网格。简而言之,确保拼接的sql与①中的相同,并且可以通过debug查看。
⑤查询数据
将动态存储sql语句的StringBuilder转换为字符串,将存储的参数集转换为数组,然后使用jdbcTemp进行查询。
二、前后台代码编写
1业务分析
我们想找到搜索框所在的静态页面,如下所示:
要解决两个问题:
①我们想将一个点击事件绑定到搜索中。点击后,我们将跳转到route_list页面,显示找到的相应数据。
的绑定函数是queryByRname。
②我们希望获得搜索框中输入的数据。

在这里,您可以通过层次选择器$选择与搜索框相对应的标签
2前端代码实现
定义函数queryByRname
①获取搜索框中的内容。
使用层次选择器,通过调用jQuery的val方法,也就是这里的搜索框,就可以得到相应标签中的数据。
②跳转到route_list.html页面
Location.href可以跳转到相应的页面。同时,rname作为参数传递给后台。
③route_list.html页面代码
②跳转带有一个参数。自然,需要获取参数并将其添加到服务器请求参数中。
应该对参数进行解码,因为浏览器会自动对搜索框中输入的数据进行编码。
使用decodeURL函数可以完成编码。
3后台接受此参数。
在现有业务逻辑的基础上添加参数。
您只需要添加代码来获取web层中的rname数据。
同时作为参数传递给服务层,服务层也添加这个参数来查询dao层。
其他代码不需要修改,只增加一个rname参数。
类似地,sql查询语句也在dao层中动态拼接。
简而言之,可以先写一个完整的sql语句,然后动态拼接rname参数。
检查使用debug判断sql语句是否正确拼接的方式。
三、搜索框数据回填
我们在搜索框中输入信息后,点击搜索,搜索框的内容就会消失。
其实他们应该还是存在的,那我们该怎么办?
您需要考虑数据回填:
一个总的想法是:
获得搜索框中的数据后,将其重置到相应的选项卡。

值得注意的是:
要解码的参数和要绑定的页面加载事件。
最后
感谢您的观看。
如果可以,请给我一个赞。谢谢你。


