如何在 spring 引导控制器中执行 sql 语句?

how to execute sql statements inside spring boot controller?

我想在 spring 引导控制器 class 中执行 sql 语句,而不在 jpa 存储库中定义任何方法。我要使用的语句是

SELECT UUID();

此语句与数据库相关,与特定实体无关。

如果有人可以通过

提供执行上述语句的解决方案,那就太好了
  1. spring 控制器 class
  2. 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;
}