在我的 application.properties 中我设置了:
datasource.test.driverClass=org.postgresql.Driver
datasource.test.url=jdbc:postgresql://localhost:5433/test
datasource.test.username=admin
datasource.test.password=admin
logging.level.com.eternity = DEBUG
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我尝试从字符串中执行一些 SQL 查询,如下所示:
String selectQueryPartOne = "SELECT name, ("+ StringUtils.join(sumString, " + ")+") AS 'Price' FROM house WHERE NOT (" +StringUtils.join(sumString, " IS NULL OR ")+" IS NULL);";
JdbcTemplate statement = new JdbcTemplate();
statement.queryForList(selectQueryPartOne);
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,但是,我收到以下错误:
java.lang.IllegalArgumentException: No DataSource specified
Run Code Online (Sandbox Code Playgroud)
我发现,在我的statement对象中,我需要首先设置数据源。但是,我不知道在哪里可以获取这个 dataSource 对象。你能帮忙吗?
当您自己创建JdbcTemplate实例时,您是在 Spring 依赖注入之外工作,因此不会进行注入DataSource。您需要通过自动装配使用 Spring 提供的实例,例如:
@Controller
public class MyController {
@Autowired private JdbcTemplate jdbcTemplate;
@RequestMapping("/")
public String myAction(){
// do stuff with the jdbc template
}
}
Run Code Online (Sandbox Code Playgroud)
此外,Spring 和 Spring-boot 文档是进一步研究使用 spring 的重要资源。
| 归档时间: |
|
| 查看次数: |
5516 次 |
| 最近记录: |