2012-01-18 4 views
1

誰かが良い実装例やSQLパーサーをjava用に使用できるシナリオをお勧めします。検索シナリオ用のJava用SQLパーサーの使用

1)これは、このための理想的な解決策になることができます:

私たちは、特定のパラメータに基づいて、UI上で提示されるデータをフィルタリングするために必要なアプリケーションを持って、私はこれについていくつかの疑問を持っているなど を基準に並べ替えます?

2)UIはJavaレイヤーにクエリを提供するためにどのように役割を果たすことができますか?

答えて

1

JavaアプリケーションでSQLクエリを動的に作成し、このSQLを使用してデータをフェッチしますか?あなたは、このようなSQLを持っているとしましょう:ユーザーは、> 40歳としてUIからいくつかの他のフィルタを、拾う

select salary from emp where dept='sales' 

た後、その後、SQLは次のようになります。もちろん

select salary from emp where dept='sales' and age > 40 

、あなたはもっと複雑なフィルタを追加したり、ソート句を追加することもできます。

これを実現するには、SQL Parserが役に立ちます。ここでは、Java SQL Parserに基づいてDeconstruct, Modify, Rebuild a SQL statementの方法を説明するデモがあります。

+0

私のusecaseはデータ用のユーザーフィルタに似ていますが、UIは複数のリクエストparamsを送信する代わりにselect式を作成する必要があります.For.eg http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API_Select.html 'field1 = 'abc'とfield2 = 'cde' orderby field1 desc limit 10,20' のような式がUIからjava APIに渡されるような' select field1、field2 from field2 = Java APIがその選択式を解析してそれらのパラメータを取得し、DBに渡す動的SQL文字列を作成します。 あなたは何をお勧めしますか? – schhajed

+0

このような動的SQLを作成する必要がありますか?select field1、field2 from mydomainここで、field1 = '@ p1'とfield2 = '@ p2' orderby field1 desc limit 10,20、リテラルをパラメータで置き換えますか? –

0

私は、SQLパーサーが何を想定しているのかわかりません。アプリケーションはSQLを解析する必要はありません。 ThayはSQLクエリを実行しなければならず、したがって潜在的にSQLクエリを動的に生成する必要があります。しかし、それはアプリケーションではなく、SQLを解析するデータベースです。

UIは通常、サービスレイヤにクエリを提供しません。 UIは、データがどのように保持されるか、実行するクエリを知る必要はありません。それはその責任ではありません。 UIはフィルタまたは基準オブジェクトをサービスレイヤに渡すだけで、フィルタまたは条件をSQLクエリに変換し、クエリを実行し、結果をJavaオブジェクトに変換し、これらのオブジェクトを表示するUIに戻します。

+0

私は[jsqlparser](http://jsqlparser.sourceforge.net/home.php)と[zql](http://zql.sourceforge.net/)に関連するものについて話しています。それらの実装? – schhajed

+0

なぜSQLを解析しますか?あなたの質問は、データをフィルタリングしたいと言っています。このためにSQLパーサーは必要ありませんか?データをデータベースに格納し、SQLクエリを使用してフィルタリングします。 SQLパーサーは、データベースを実装*したい場合に便利です。 *データベースを使用したい*。 –

関連する問題