|
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 |
|