关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 6129|回复: 0

3.6.5不能进行模糊查询,只能*查询

[复制链接]
发表于 2016-8-19 14:08:51 | 显示全部楼层 |阅读模式
3.6.5不能进行模糊查询,只能*查询
参照3.6.3版本修改如下内容:
1、在ResourceUtil.java添加:
        public final static boolean fuzzySearch = ResourceUtil.isFuzzySearch();
        public static boolean isFuzzySearch() {
                return "1".equals(bundle.getString("fuzzySearch"));
        }
2、在QueryParamUtil.java 的applyType 方法中修改:
public static String applyType(String fieldType, String value) {
                if (!StringUtil.isEmpty(value)) {
                        String result = "";
                        if (CgAutoListConstant.TYPE_STRING.equalsIgnoreCase(fieldType)) {

                                if (ResourceUtil.fuzzySearch && (!value.contains("*"))) {
                                        value = "*" + value + "*";
                                }


                                result = "'" + value + "'";
                        } else if (CgAutoListConstant.TYPE_DATE.equalsIgnoreCase(fieldType)) {
                                result = getDateFunction(value, "yyyy-MM-dd");
                        } else if (CgAutoListConstant.TYPE_DOUBLE.equalsIgnoreCase(fieldType)) {
                                result = value;
                        } else if (CgAutoListConstant.TYPE_INTEGER.equalsIgnoreCase(fieldType)) {
                                result = value;
                        } else {
                                result = value;
                        }
                        return result;
                } else {
                        return "";
                }
        }

3、在PageValueConvertRuleEnum.java修改convert方法:
public static HqlRuleEnum convert(Object value) {
                // 避免空数据
                if (value == null) {
                        return null;
                }
                String val = (value + "").toString().trim();
                if (val.length() == 0) {
                        return null;
                }
                // step 1 .> <
                HqlRuleEnum rule = HqlRuleEnum.getByValue(val.substring(0, 1));
                // step 2 .>= =<
                if (rule == null && val.length() >= 2) {
                        rule = HqlRuleEnum.getByValue(val.substring(0, 2));
                }
                // step 3 like
                if (rule == null && val.contains(HqlParseEnum.SUFFIX_ASTERISK.getValue())) {
                        if (val.startsWith(HqlParseEnum.SUFFIX_ASTERISK.getValue()) && val.endsWith(HqlParseEnum.SUFFIX_ASTERISK.getValue())) {
                                rule = HqlRuleEnum.LIKE;
                        } else if (val.startsWith(HqlParseEnum.SUFFIX_ASTERISK.getValue())) {
                                rule = HqlRuleEnum.LEFT_LIKE;
                        } else {
                                rule = HqlRuleEnum.RIGHT_LIKE;
                        }
                }
                // step 4 in
                if (rule == null && val.contains(HqlParseEnum.SUFFIX_COMMA.getValue())) {
                        rule = HqlRuleEnum.IN;
                }
                // step 5 !=
                if (rule == null && val.startsWith(HqlParseEnum.SUFFIX_NOT_EQUAL.getValue())) {
                        rule = HqlRuleEnum.NE;
                }

                if (rule == null && ResourceUtil.fuzzySearch) {
                        rule = HqlRuleEnum.LIKE;
                }


                return rule != null ? rule : HqlRuleEnum.EQ;
        }

结果依然不能模糊查询,这是何解? 并且已经在sysConfig.properties文件中设置fuzzySearch=1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表