`

模糊搜索条件工具类实现

阅读更多
  • 备份存档

  • 需求:

    1. 设计公共工具类组合搜索条件语句;
    2. 关键字以空格分隔;
    3. 多个空格将视为一个空格;
  • 思路:

    1. 传入两个参数,一个为输入值,一个为匹配字段;
    2. 利用正则将输入值处理为将要匹配的数组;
    3. 对匹配字段进行语句组合;
  • 实现:(注:该方法是在ofbiz框架中实现,如果是ssh或别的框架中,使用jdbc,实现原理相同)

       
        public static EntityCondition getFuzzyMatchingFromInput(String input, String field) {
            String result = StringUtil.changeSpecialForSearch(input).trim();
            String[] strs = result.split("[\\s]+");
            List<EntityCondition> conditionList = FastList.newInstance();
            if (strs.length == 0) {
                conditionList.add(EntityCondition.makeCondition(field, EntityOperator.LIKE, "%\\" + input + "%"));
            } else {
                for (int i = 0; i < strs.length; i++) {
    
                    conditionList.add(EntityCondition.makeCondition(field, EntityOperator.LIKE, "%"
                                    + strs[i].replace("%", "\\%") + "%"));
                }
            }
            return EntityCondition.makeCondition(conditionList, EntityOperator.OR);
        }
     
  • 注意点:

    1. 注意处理输入值的连续空格,如果只使用[\\s]来分隔,则可能会搜索出全部记录;
    2. changeSpecialForSearch 是另一个工具类方法,会将输入值中所有特殊字符转换但并不包含%
    3. 由于%没有被处理,则要再次对输入值进行%处理
0
0
分享到:
评论

相关推荐

    思达电子邮箱地址搜索软件Email Spider 9.1

    10、邮箱的模糊查找和自动分页,可以实现邮箱的快速分类导出; 11、支持每个网站的最大网页搜索数量参数,达到最大数量时不再搜索这个网站; 12、支持每次工作的最大网页搜索数量参数,达到最大数量时停止工作; 13...

    电子邮件机器人V9.8

    10、邮箱的模糊查找和自动分页,可以实现邮箱的快速分类导出; 11、支持每个网站的最大网页搜索数量参数,达到最大数量时不再搜索这个网站; 12、支持每次工作的最大网页搜索数量参数,达到最大数量时停止工作; 13...

    EXCEL集成工具箱V6.0

    本工具相对于同类工具有不破坏背景色、条件格式、复制粘贴和撤消功能之优点。 【高级背景选择】 背景着色的高级功能,支持行着色、列着色、行与列同时着色共3种方式供选择。 快捷取数 【快捷取数列】 随存储格即时...

    EXCEL集成工具箱V8.0完整增强版(精简)

    本工具相对于同类工具有不破坏背景色、条件格式、复制粘贴和撤消功能之优点。 【高级背景选择】 背景着色的高级功能,支持行着色、列着色、行与列同时着色共3种方式供选择。 快捷取数 【快捷取数列】 随存储格...

    设备在线管理系统源代码

    java动态显示,多种导航方式,范围更加精确 使用搜索工具精确查找设备,可按设备名称、设备分类、设备简介等单条件或组合条件,结合关键字模糊搜索 关键字自动动态更新 显示设备照片,更加形象 可打印...

    Visual C++编程技巧精选500例.pdf

    047 如何在文档类中设置标题栏文字? 048 如何防止在标题栏上显示文档名? 049 如何禁止标题栏的最小化按钮?… 050 如何禁止标题栏的最大化按钮? 051 如何禁止标题栏的关闭按钮? 052 如何获取标题栏的按钮尺寸? 053 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    2.3 条件语句 38 实例028 判断某一年是否为闰年 38 实例029 验证登录信息的合法性 39 实例030 为新员工分配部门 40 实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 Python条件语句和基本数据类型 08 Python while循环语句以及练习题 09 练习题讲解 第10章 01 上节内容回顾以及补充 02 上周作业实现 03 Pycharm的安装和使用 04 Python 运算符 05 Python 运算符以及总结 06 ...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例236 SQL语句的模糊查询 实例237 利用查询语句复制表结构 9.2 查询控件 实例238 查询指定控件内字符串 实例239 查询日期控件内数据 实例240 控件作为字段、操作符和内容进行查询 实例241 巧妙获取年龄 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例236 SQL语句的模糊查询 实例237 利用查询语句复制表结构 9.2 查询控件 实例238 查询指定控件内字符串 实例239 查询日期控件内数据 实例240 控件作为字段、操作符和内容进行查询 实例241 巧妙获取年龄 ...

    Java范例开发大全 (源程序)

     第3章 条件控制语句(教学视频:75分钟) 26  3.1 if控制语句 26  实例14 判断输入的年份是否为闰年 26  实例15 抽奖活动 27  3.2 for语句 28  实例16 小九九乘法表 28  实例17 如何列出素数 29  ...

    java范例开发大全(pdf&源码)

    第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列出素数 29 实例18 Java中的递归 31 ...

    java范例开发大全源代码

     第3章 条件控制语句(教学视频:75分钟) 26  3.1 if控制语句 26  实例14 判断输入的年份是否为闰年 26  实例15 抽奖活动 27  3.2 for语句 28  实例16 小九九乘法表 28  实例17 如何列出素数 29...

    java范例开发大全

    第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列出素数 29 实例18 Java中的递归 31 ...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例236 SQL语句的模糊查询   cc实例237 利用查询语句复制表结构   9.2 查询控件   cc实例238 查询指定控件内字符串   cc实例239 查询日期控件内数据   cc实例240 控件作为字段.c操作符和内容...

Global site tag (gtag.js) - Google Analytics