如何从属性文件中读取 SQL 查询
How to read SQL queries from a properties file
我有一个遗留的 spring mvc 应用程序,它使用 spring jdbc 作为 ORM。现在我想使用 spring 引导而不是 mvc 我将把它转换成 RestAPI。我对数据库查询部分有疑问。使用 属性placeholder xml conf 在旧应用程序中配置外部 sql 查询属性文件。使用 Spring 引导和最新的注释方法我该如何配置它。我的理解是
- 将查询属性文件放在 src/main/resources 目录中
- 在 DAO 中创建与 sql.
的键(名称)相同的 属性 名称
- 为密钥 属性
创建 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;
}
我有一个遗留的 spring mvc 应用程序,它使用 spring jdbc 作为 ORM。现在我想使用 spring 引导而不是 mvc 我将把它转换成 RestAPI。我对数据库查询部分有疑问。使用 属性placeholder xml conf 在旧应用程序中配置外部 sql 查询属性文件。使用 Spring 引导和最新的注释方法我该如何配置它。我的理解是
- 将查询属性文件放在 src/main/resources 目录中
- 在 DAO 中创建与 sql. 的键(名称)相同的 属性 名称
- 为密钥 属性 创建 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;
}