1

我有一个带有“getUser”方法的 Java 对象,该方法将执行查询,例如“ select * from user when table.name= $param1

该方法有参数“ Map<String, String> params”,例如“ params.add("param1", "Den")

我想将查询存储在其他文件中,例如 GetUser.sql

运行程序时,我更改了查询。

这是怎么做的?

我不会找到框架

4

2 回答 2

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

于 2013-08-15T09:39:45.217 回答
1

您可以尝试来自 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 的答案。

于 2013-08-15T10:36:35.177 回答