Java|Java项目搜索功能的实现


Java|Java项目搜索功能的实现
文章图片
Java|Java项目搜索功能的实现
文章图片
Java|Java项目搜索功能的实现
文章图片
Java|Java项目搜索功能的实现
今天是刘小爱自学Java的第110天 。
感谢你的观看 , 谢谢你 。
话不多说 , 开始今天的学习:
事先说明:关于今天的搜索功能实现 。
并没有使用到倒排索引这样的主流搜索技术 , 就一个普通的模糊查询 。
在此之前 , 先学一个小的知识点 , sql语句动态拼接 。
一、sql语句动态拼接我们编写sql语句 , 一般都是通过预编译查询 , 使用问号这个通配符”?“
但是有的时候会存在某个参数不存在的情况 , 比如说这一次查询前端传来了3个参数 , 下一次却只传了2个参数 。
面对这个问题 , 那该怎么办呢?
就需要使用到sql语句的动态拼接了 , 代码编写如下:
①sql语句中的cid这个参数是不确定的 , 有时有 , 有时可能没有 。
②StringBuilder的使用
先将sql语句中确定的部分存放到StringBuilder中 , 再创建一个集合存放参数 。
③对cid做出判断
如果cid不为空且存在 , 就在sql语句中拼接“ and cid = ?” , 同时将cid存入参数集合中 。
④拼接cid后面其它的参数
在sql语句中拼接“  limit ??” , 然后将另外两个固定参数存入集合 。
注意:sql拼接过程中空格不要忘记了 , 总之要保证拼接后的sql要和①中的一样 , 通过debug可以查看 。
⑤查询数据
将动态存放sql语句的StringBuilder转换成字符串 , 将存放参数的集合转换成数组 , 再使用jdbcTemp查询 。
二、前后台代码编写1业务分析
我们要找到搜索框所在的静态页面 , 如下图:
要解决两个问题:
①是我们要给搜索绑定一个点击事件 , 点击之后就会跳转到route_list页面 , 展示查询到的对应数据 。
绑定的函数为queryByRname()
②我们要获取搜索框中输入的数据 。
这里就可以通过层级选择器$(“.search input”)选中搜索框对应的标签 。
2前端代码实现
定义函数queryByRname()
①获取搜索框中的内容
使用层级选择器 , 调用jQuery的val()方法可以获取对应标签中的数据 , 这里也就是搜索框 。
②跳转route_list.html页面
location.href即可跳转对应页面 。 同时将rname作为参数传递给后台 。
③route_list.html页面代码
在②中跳转是携带了一个参数 , 自然是需要获取该参数 , 再将其增加到服务器请求参数中 。
其中要将参数进行解码 , 因为浏览器会自动将在搜索框中输入的数据进行编码 。
使用decodeURL()功能即可完成编码 。
3后台接受该参数
在已有的业务逻辑基础上添加参数即可
只需要在web层中增加获取rname这个数据的代码 。
同时在将其作为参数传递给service层 , 而service层也增加该参数去dao层查询 。
其它代码都不用改变 , 只是增加了一个rname参数 。
同样的道理 , 在dao层中也动态拼接sql查询语句 。
总之可以先写出完整的sql语句 , 再动态拼接rname这个参数 。
【Java|Java项目搜索功能的实现】