2016-09-19 12 views
2

実行時にmybatisを使用して実行するSQLを、再デプロイメントなしで変更できるようにする必要があります。私はウェブ上で答えを探しましたが、何もできませんでした。再デプロイせずにMybatisのSQLクエリを変更できますか?

私は、いくつかの条件に基づいて句を追加/削除できる動的SQL機能を意味するものではありません。私はSQLを完全に変更できるはずです。

mapper sqlは、config xmlに記載されているマッパーxmlではなくDBまたはオブジェクトから取得できますか。それができれば、いくつかのREST呼び出しを使用してDBまたはオブジェクトを更新することができ、実行される次のsqlは新しいsqlを取得します。必要に応じて、パフォーマンスを向上させるDB SQLをキャッシュします。

可能ですか?私たちはこの種のことをすることができますか? mybatisでは可能ではない場合、これをサポートする他のフレームワークはありますか?

答えて

1

Java Apiを使用する場合は、@SelectProviderまたはその他の@ ...プロバイダアノテーションをマッパーインターフェイスメソッドに配置し、それらのプロバイダを作成し、必要な場所からSQLクエリを取得するだけで、SQLプロバイダを使用できます。このような 何か:

@SelectProvider(type = EntitySqlProvider.class, method = "buildSelectQuery") 
List<T> find(); 

Providerクラスが実装したり、何かを拡張する必要はありません。文字列を返すメソッドを作成するだけです。 しかし、まあ、これは次のように我々は通常、マッパーの場所を設定mybatis-config.xmlでは、XML構成

0

では動作しません:

<mappers> 
    <mapper resource="CategoryMapper.xml"/>  
</mappers> 

私たちは、ファイルシステム内のマッパーを保存し、それらを次のように設定することができます。

<mappers> 
    <mapper url="file:///D:/CategoryMapper.xml"/> 
</mappers> 

しかし、私はMyBatisがこれらのマッパーを一度読み込んでオブジェクトモデルを準備し、それをキャッシュすると思います。だから私はファイルシステム上でそれらを更新しても、それらのマッパーファイルを再び読むとは思わない。

関連する問題