あなたはパーサを実装するか、他単に手動で文字列を解析するためにjavacc(Javaコンパイラコンパイラ)のようなものを使用して試みることができます強引な。表現を見つけ出すたびに、それをオブジェクトとして表現します。次に、式ツリーを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の表現をあなたが望む深みで入れ子にすることができます。
非常に興味深い。 IBatisのように見えます。 –