sqt_liu 发表于 2016-8-19 14:08:51

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

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
页: [1]
查看完整版本: 3.6.5不能进行模糊查询,只能*查询