如何在 spring 引导控制器中执行 sql 语句?
how to execute sql statements inside spring boot controller?
我想在 spring 引导控制器 class 中执行 sql 语句,而不在 jpa 存储库中定义任何方法。我要使用的语句是
SELECT UUID();
此语句与数据库相关,与特定实体无关。
如果有人可以通过
提供执行上述语句的解决方案,那就太好了
- spring 控制器 class
- jpa 存储库(如果推荐)
更新
控制器:
@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();
}
在 JEE applications 中的表示层(控制器或视图)上执行任何 SQL(执行任何持久性)通常是架构上糟糕的设计。
最好的选择是让控制器使用服务层,当服务层调用持久层时:获取、保存或更新数据。
无论如何,你可以使用Spring Data JDBC。类似于:
import org.springframework.jdbc.core.JdbcTemplate;
....
UUID uuid = (UUID)jdbcTemplate.query("SELECT UUID()", UUID.class);
....
您可以在代码中使用 JdbcTemplate。
配置中需要的 bean class 是:-
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource)
{
return new JdbcTemplate(dataSource);
}
运行 查询的代码是:-
@Autowired
private JdbcTemplate JdbcTemplate;
public String getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid.toString();
}
或者可能是这样的:-
public UUID getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid;
}
我想在 spring 引导控制器 class 中执行 sql 语句,而不在 jpa 存储库中定义任何方法。我要使用的语句是
SELECT UUID();
此语句与数据库相关,与特定实体无关。
如果有人可以通过
提供执行上述语句的解决方案,那就太好了- spring 控制器 class
- jpa 存储库(如果推荐)
更新
控制器:
@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();
}
在 JEE applications 中的表示层(控制器或视图)上执行任何 SQL(执行任何持久性)通常是架构上糟糕的设计。
最好的选择是让控制器使用服务层,当服务层调用持久层时:获取、保存或更新数据。
无论如何,你可以使用Spring Data JDBC。类似于:
import org.springframework.jdbc.core.JdbcTemplate;
....
UUID uuid = (UUID)jdbcTemplate.query("SELECT UUID()", UUID.class);
....
您可以在代码中使用 JdbcTemplate。
配置中需要的 bean class 是:-
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource)
{
return new JdbcTemplate(dataSource);
}
运行 查询的代码是:-
@Autowired
private JdbcTemplate JdbcTemplate;
public String getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid.toString();
}
或者可能是这样的:-
public UUID getUUID(){
UUID uuid = (UUID)jdbcTemplate.queryForObject("select UUID()", UUID.class);
return uuid;
}