如何在JdbcTemplate中指定DataSource?

时间:2016-05-03 12:54:24

标签: spring-boot

在我的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

在我的控制器中,我试图通过这样的字符串执行一些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);

哪种方法可行,但是,我收到以下错误:

java.lang.IllegalArgumentException: No DataSource specified

我发现,在我的statement对象中,我需要先设置setDataSource。但是,我不知道在哪里可以获得此dataSource对象。你能帮忙吗?

1 个答案:

答案 0 :(得分:3)

当您自己创建JdbcTemplate实例时,您正在Spring依赖注入之外工作,因此不会注入DataSource。您需要通过自动装配使用Spring提供的实例,例如:

@Controller
public class MyController {
    @Autowired private JdbcTemplate jdbcTemplate;

    @RequestMapping("/")
    public String myAction(){
        // do stuff with the jdbc template
    }
}

此外,Spring和Spring-boot文档是进一步研究使用spring的重要资源。