我有一个带有方法“getUser”的Java对象,它会进行查询,例如“select * from user when table.name= $param1
”
该方法的参数为“Map<String, String> params
”,例如“params.add("param1", "Den")
”
我想将查询存储在其他文件中,例如GetUser.sql
运行程序时,我更改了查询。
这是怎么做到的?
我找不到框架
答案 0 :(得分:3)
您可以使用java属性文件存储您的查询。在程序执行期间,您可以从属性文件加载查询并填充参数并对数据库执行最终查询。
query.getuser = select * from user when table.name= $param1
从代码中加载属性文件并获取查询字符串:
Properties property = //load property file
String getUserQuery= propertie.getProperty("query.getuser");
或者,您可以使用JPA / Hibernate 命名查询,您可以将查询保存到另一个外部映射文件中。请参阅http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch13.html
答案 1 :(得分:1)
您可以从Apache commons-vfs:
尝试FileAlterationMonitorFileSystemManager fsManager = VFS.getManager();
FileObject file = fsManager.resolveFile("/path-to-file");
DefaultFileMonitor fm = new DefaultFileMonitor(new FileChangeListener());
fm.addFile(file);
fm.start();
public class FileChangeListener implements FileListener {
@Override
public void fileCreated(FileChangeEvent event) throws Exception {
//do nothing
}
@Override
public void fileDeleted(FileChangeEvent event) throws Exception {
//do nothing
}
@Override
public void fileChanged(FileChangeEvent event) throws Exception {
//Reload query from file
}
}
对于查询重新加载,您可以使用Shamim Ahmmed的答案。