首先,我们要清楚搜索框中根据关键字进行条件搜索发送的是get请求,并且是向当前页面发送get请求

//示例代码 请求路径为当前页面路径 "/product"

当我们要实现多条件搜索功能时,可以将搜索条件封装为一个map集合,再根据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 searchparam = new hashmap<>();

searchparam.put("productname",productname);

searchparam.put("place",place);

searchparam.put("typeid",typeid);

searchparam.put("minprice",minprice);

searchparam.put("maxprice",maxprice);

pageinfo pageinfo = kaolaservice.findbypageno(pageno,searchparam);

model.addattribute("pageinfo",pageinfo);

return "product/list";

}

业务层代码:

public pageinfo findbypageno(integer pageno, map searchparam) {

pagehelper.startpage(pageno,10);

list kaolalist = kaolamapper.findbysearchparamwithtype(searchparam);

return new pageinfo<>(kaolalist);

}

mybatis中的mapper.xml:

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

kaola.product_name like concat('%',#{productname},'%')

and kaola.place = #{place}

and kaola.type_id = #{typeid}

= #{minprice} ]]>

order by kaola.id desc

这样,就可以从前端到后端实现多条件搜索功能了。我们还会遇到这样一种情况,在输入搜索条件时,显示列表会不断自动刷新,这里其实用到了ajax的相关内容,在输入的过程中,会不断发出ajax请求,然后刷新页面。

value="${param.productname}"是从请求url的参数中获取值,实现在输入关键字搜索后刷新页面显示关键字这一功能,直接上图:

在输入中文关键字进行搜索时,可以使用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}}"

});

点击查看大图

搜索结果

总结

以上所述是小编给大家介绍的java实现搜索功能代码详解,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java搜索代码_Java实现搜索功能代码详解相关推荐

  1. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

  2. 希尔排序基础java代码_java 算法之希尔排序详解及实现代码

    摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...

  3. java 链表逆转_java 实现单链表逆转详解及实例代码

    java 实现单链表逆转详解 实例代码: class Node { Node next; String name; public Node(String name) { this.name = nam ...

  4. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  5. java多线程教程_java 基础教程之多线程详解及简单实例

    java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...

  6. java observer模式_Java观察者模式(Observer)详解及应用

    Java观察者模式(Observer)详解及应用 (2011-12-15 14:03:30) 标签: 杂谈 Java观察者模式(Observer)详解及应用 由于网站带有弱sns功能,因此需要设计关注 ...

  7. java闭合数据_java多线程中线程封闭详解

    线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...

  8. java静态多态_Java静态方法不具有多态性详解

    动态绑定机制使得基类的引用能够指向正确的子类对象,从而使得面向基类编程成为可能. 然而动态绑定在以下两种情况会失效. 1.基类方法是private或final修饰的 这个很好理解,因为private说 ...

  9. java linkedlist实例_Java Linkedlist原理及实例详解

    这篇文章主要介绍了Java Linkedlist原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定义:linkedlist属于链表结构 ...

  10. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

最新文章

  1. python类对象和实例对象
  2. ubuntu下gcc的安装与使用
  3. 递归-汉诺塔(代码、分析、汇编)
  4. linux查看某进程的连接,linux下查看指定进程的所有连接信息(转)
  5. [转载]如何限制一个类对象只在栈(堆)上分配空间?
  6. Java程序停止 mq通道未关闭_java – 如何在MQ上停止丢失消息
  7. SpringCloud的EurekaClient : 客户端应用访问注册的微服务(无断路器场景)
  8. 关于升级到win10后的网络问题
  9. Java面试题:面向对象的特征有哪些方面?
  10. 关于内存地址和内存空间的理解。
  11. 台达AS228Tplc加台达触摸屏一套程序,一共100个io 左右,一个伺服程序。plc程序有FB块,ST语言,C语言,触摸屏有配方和数据储存功能
  12. Android AsyncTask 源码解析(任玉刚版)
  13. python批量写入经纬度
  14. 普通链接二维码打开小程序实现动态传递参数
  15. iptables中snat、dnat、masquerade
  16. 精确算法、启发式算法、元启发式算法及增长方式浅析
  17. 小米盒子4S Pro好不好?对比当贝盒子B1值得买吗?
  18. php图片镜像翻转,利用css动画属性rotate来实现镜像翻转
  19. 刷新世界纪录,图普科技夺MegaFace百万级人脸识别冠军
  20. 怎么制作有趣的GIF动态表情包

热门文章

  1. CAS4.0.0整合LDAP
  2. Intel SIMD: AVX2
  3. 大数据培训怎么样,怎么选择合适大数据培训机构?
  4. linux系统英伟达gpu驱动卸载_在Linux系统中卸载手动安装的Nvidia驱动程序
  5. Chrome、Edge新内核、360系列、FireFox、IE、Opera等浏览器操作文件
  6. 中国偏光太阳镜镜片市场趋势报告、技术动态创新及市场预测
  7. 移动端考勤签到 前端考勤签到界面
  8. Java 实现分布式定时任务
  9. 公司估值(贴现现金流量法DCF)
  10. 中国新经济指数(2017-2022)