如何从属性文件中读取 SQL 查询

How to read SQL queries from a properties file

我有一个遗留的 spring mvc 应用程序,它使用 spring jdbc 作为 ORM。现在我想使用 spring 引导而不是 mvc 我将把它转换成 RestAPI。我对数据库查询部分有疑问。使用 属性placeholder xml conf 在旧应用程序中配置外部 sql 查询属性文件。使用 Spring 引导和最新的注释方法我该如何配置它。我的理解是

  1. 将查询属性文件放在 src/main/resources 目录中
  2. 在 DAO 中创建与 sql.
  3. 的键(名称)相同的 属性 名称
  4. 为密钥 属性
  5. 创建 getter 和 setter

这是正确的做法吗?如果是,如果我使用它,我将如何在我的 DAO class 中获取查询?。如果不是最好的方法是什么。

发布这个问题后我没有得到太多回应。所以我从我这边做了一些工作,并按照我在问题中提到的方式修复了它。我没有找到任何其他方法。

首先是 java class Application属性Config for 属性SourcesPlaceholderConfigurer 。 属性 源文件是我的 sql 属性文件。

@Configuration
@PropertySource("classpath:appSql.properties")
public class ApplicationPropertyConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

appSql.properties

selectallemployees=select * from employee;

创建了另一个 class,名称为 ApplicationSQLWrapper.java,并用 @Component 注释。这包含与带@value 注释的 sql 属性键相同的 属性 名称。

@Component
public class ApplicationSQLWrapper{ 
    
    @Value("${selectallemployees}")
    private String selectallemployees;

//getter and setter

可以通过创建组件 class 的对象从 DAO class 访问此 SQL。

这不是一个好方法,但您可以通过多种方式实现,我总是在处理数据库和 spring 引导时使用 JPA

application.yml

 emp:
    eid: "select eid from employee"
    name: "select ename from employee"

在模型包下为Employee创建一个class

 @ConfigurationProperties("emp")
  @Getter
  @Setter
  public class Employee
 {
      private List<Integer> eid;
      private List<String> ename;
 }

在config包下为Employee创建一个bean实例

@Configuration
public class Config
{
     @Bean
     public Employee getEmployee()
    {
         return new Employee();
    }
}

然后你可以在你的项目中随时调用Employee实例

@RestController
public class EmpController
{
    @Autowired
    Employee emp;
}