java 如何在 spring boot 控制器中执行 sql 语句?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/49488675/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to execute sql statements inside spring boot controller?
提问by user2083529
I want to execute sql statement inside my spring boot controller class with out defining any method in the jpa repository. The statement i want to use is
我想在我的 spring 引导控制器类中执行 sql 语句,而不在 jpa 存储库中定义任何方法。我想使用的语句是
SELECT UUID();
This statement is database related and is not associated with a particular entity.
此语句与数据库相关,与特定实体无关。
It would be nice if any one can provide solution for the execution of the above statement via
如果有人可以通过以下方式为上述语句的执行提供解决方案,那就太好了
- spring controller class
- jpa repository (if recommended)
- 弹簧控制器类
- jpa 存储库(如果推荐)
update
更新
controller:
控制器:
@Autowired
JdbcTemplate jdbcTemplate;
@RequestMapping(value = "/UUID", method = RequestMethod.GET)
public ResponseEntity<String> getUUID() {
String uuid = getUUID();
return buildGuestResponse(uuid);
}
public String getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid.toString();
}
回答by kakabali
You can use JdbcTemplate in your code.
您可以在代码中使用 JdbcTemplate。
The bean you will need in your configuration class is:-
您在配置类中需要的 bean 是:-
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource)
{
return new JdbcTemplate(dataSource);
}
And the code to run the query is:-
运行查询的代码是:-
@Autowired
private JdbcTemplate JdbcTemplate;
public String getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid.toString();
}
or may be like this:-
或者可能是这样的:-
public UUID getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid;
}
回答by Victor Gubin
This is generally architecturally bad design to execute any SQL (do any persistence) on presentation layer (controller or view) in JEE applications.
在JEE 应用程序的表示层(控制器或视图)上执行任何 SQL(执行任何持久性)通常在架构上是糟糕的设计。
The best option is make controller to use service layer, when service layer calling the persistence layer for: obtaining, saving or updating data.
最好的选择是让控制器使用服务层,当服务层调用持久层时:获取、保存或更新数据。
In any case, you can use Spring Data JDBC. Something like:
在任何情况下,您都可以使用Spring Data JDBC。就像是:
import org.springframework.jdbc.core.JdbcTemplate;
....
UUID uuid = (UUID)jdbcTemplate.query("SELECT UUID()", UUID.class);
....