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项目搜索功能的实现】
- 驱动之家资讯|支付宝搜索流量全面开放:麦当劳、肯德基、星巴克等抢先升级“品牌直达”
- 懂懂副业| 普通人的躺赚机会来了,互联网6个靠谱的副业项目盘点
- 每日健康要闻|中国药企首家入选FDA“新兴技术项目”!三迭纪3D打印应用加速
- 简创企服|简创企服:企业形象如何搭建?搜索引擎是重要的出口
- Java|面试三年经验的程序员,感觉简历在造假!连个简单的题目都不会
- 科技美学|中芯国际宣布将合作开展28nm及以上集成电路项目
- 申永祥|手机网站移动SEO搜索优化详细步骤
- 游龙战神|-启动流程,好程序员Java培训分享SpringBoot
- 每日科技果粉|Graph启动激励测试网,参与者有机会获Graph代币奖励,数据索引项目The
- Java|Java重写equals方法时为什么要重写hashCode方法