我有一个带有“getUser”方法的 Java 对象,该方法将执行查询,例如“ select * from user when table.name= $param1
”
该方法有参数“ Map<String, String> params
”,例如“ params.add("param1", "Den")
”
我想将查询存储在其他文件中,例如 GetUser.sql
运行程序时,我更改了查询。
这是怎么做的?
我不会找到框架
您可以使用 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
您可以尝试来自 Apache commons-vfs 的 FileAlterationMonitor:
FileSystemManager 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 的答案。