我正在尝试在spring boot应用程序启动时设置H2数据库。我已在Application.Properties中配置了数据库:
spring.datasource.url = jdbc:h2:file:~/testdb
spring.datasource.username = sa
spring.datasource.password = sa
spring.datasource.driverClassName = org.h2.Driver
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
CreateH2Database createH2Database = new CreateH2Database();
createH2Database.create();
}
}
public class CreateH2Database {
private Logger log = Logger.getLogger(CreateH2Database.class);
@Autowired
protected JdbcTemplate jdbcTemplate;
public void create() {
log.info("Creating H2 Database");
createUsers();
}
private void createUsers() {
log.info("Creating users table");
jdbcTemplate.execute("create table if not exists users (id serial, first_name varchar(255), last_name varchar(255))");
String[] names = "John Woo;Jeff Dean;Josh Bloch;Josh Long".split(";");
for (String fullname : names) {
String[] name = fullname.split(" ");
log.info("Inserting user record for " + name[0] + " " + name[1] + "\n");
jdbcTemplate.update(
"INSERT INTO users(first_name,last_name) values(?,?)",
name[0], name[1]);
}
}
}
jdbctemplate.execute
上获得一个NullPointerException
。如何注入jdbctemplate
?我看到的所有示例都要求手动创建datasource,然后创建JdbcTemplate。但是,本例中的datasource似乎是基于application.properties值创建的。createh2database
)?如果我想在另一个应用服务器上作为WAR运行应用程序,这种方法是否有效?由于您使用的是Spring Boot,因此应该利用它的数据库初始化特性。没有必要推出您自己的实现。
您所要做的只是将schema.sql
和data.sql
文件放在类路径的根上(很可能在/resources
下)。Spring Boot将自动检测这些,并运行第一个以创建数据库,第二个以填充数据库。
请查看Spring Boot文档的这一部分
如果您需要有条件地执行初始化(也许只在运行集成测试时),您可以利用Spring概要文件。在这种情况下,您要做的是让测试概要文件的属性文件包含
而其他配置文件的属性文件将包含
spring.datasource.initialize=false
Weblogic是否有任何免费可用的应用程序(war文件),其中应用程序使用某种数据库? 如果这不是正确的地方,请将我重定向到正确的地方问这个问题。
问题内容: 我只是在评估H2数据库…下载并解压缩了安装文件,并连接到的数据库。是我的主目录,不存在(我希望H2创建它)。 控制台似乎可以正常工作。我创建了一个表并向其中插入了一行。即使断开并重新连接控制台,我也可以看到并查询该表。 但是,我没有看到预期的文件。它在哪里? 问题答案: 您确定没有: 文件?如果没有,请尝试以下操作: 它的作用是寻找H2控制台的Java进程,获取其PID并列出该进程的所
问题内容: 我遇到以下问题:当我尝试使用外部IP地址(PC的IP而不是本地IP的createTcpServer =在cmd.exe中运行ipconfig后我们看到的输出)时,发生以下错误: 服务器错误:异常打开端口“ 9092”(端口可能正在使用),原因:“ java.net.BindException:无法分配请求的地址:JVM_Bind” [90061-169] 但是,该端口未使用。我已经使用
我正在用Cucumber编写验收测试,我想使用H2数据库进行测试。 应用程序测试属性如下所示: 在目录resources/db/migration中,我有一个包含这些脚本的sql文件: 但是当我运行测试时,H2用默认格式创建模式,而不是使用脚本: 如您所见,所有VARCHAR都是使用255大小创建的,而不是真实值。 你能帮我把飞行道和H2整合起来吗? 谢谢!
我刚刚用Java8创建了springboot批处理应用程序,我想用Anotation为springbatch表创建一个数据库。 我想我必须创建配置文件,但我不知道怎么做。 @Configuration公共类ConfigBatch{ } 我导入“@ImportResource”生成一个错误,因为在我的java代码中有一个数据源,在我的xml文件中有一个数据源: 我只想在H2数据源中生成spring批