당신은 수동으로 문자열을 구문 분석 다른 파서를 구현하거나하는) javacc (자바 컴파일러 컴파일러 같은 것을 사용하여 시도해 볼 수도 있습니다 무차별 한 힘. 표현식을 발견 할 때마다 객체로 표현합니다. 그런 다음 표현식 트리를 where 절로 변환하면됩니다. 예를 들어
는 "해리 포터"
new AndExp(new FieldContainsExp("NAME", "Harry"), new FieldContainsExp("NAME", "Potter")
그리고이된다 "발행인 : 자연 * 페이지> 100", 그리고
new AndExp(new FieldContainsExp("PUBLISHER", "Nature"), FieldGreaterThan("PAGES", 100))
이된다 당신이이되면, 그들을 설정하는 매우 쉽습니다 SQL로 :
FieldContainsExp.toSQL(StringBuffer sql, Collection<Object> args) {
sql.append(fieldName);
sql.append(" like ");
sql.append("'%?%'");
args.add(value);
}
AndExp.toSQL(StringBuffer sql, Collection<Object> args) {
exp1.toSQL(sql, args);
sql.append(" AND ");
exp2.toSQL(sql, args);
}
나머지는 상상할 수 있습니다. And를 원하는만큼 깊게 중첩시킬 수 있습니다.
매우 흥미 롭습니다. 맵핑과 XML을 사용하지 않고 IBatis처럼 보입니다. –