gpt4 book ai didi

java - 使用预定义的scrypt文件通过Spring自动生成sql表

转载 作者:行者123 更新时间:2023-11-29 19:16:32 27 4
gpt4 key购买 nike

嵌入式数据库(如 H2)有一个功能,它为我们提供了使用预定义的 scrypt 文件自动生成 sql 表的可能性。

Bean 示例:

@Bean
public DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder
.setType(EmbeddedDatabaseType.H2)
.addScript("embeddedDB.sql")
.build();
}

Scrypt 文件示例:

CREATE TABLE Users
(
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
photo BLOB,
registration_date DATE NOT NULL,
role VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);

前段时间在网上看到了一个类似的解决方案,配置一个bean,在MySQL数据源的情况下自动生成SQL表(当spring上下文启动时)。该解决方案不包括 JPA/Hibernate。不幸的是,我再也找不到这个例子了......那么,我的问题是,对于MySQL数据源,如何实现Spring自动生成SQL表?

最佳答案

Spring Boot中的属性文件

        datasource.ranking.hibernate.hbm2ddl.method=create

创建将创建新表,更新将保留表。这些表将根据您的类模型创建然后在配置类中设置实体管理器属性

  @Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws NamingException {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setPackagesToScan(new String[] { "com.package" });
factoryBean.setJpaVendorAdapter(jpaVendorAdapter());
factoryBean.setJpaProperties(jpaProperties());
return factoryBean;

}

private Properties jpaProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("datasource.ranking.hibernate.dialect"));
properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("datasource.ranking.hibernate.hbm2ddl.method"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("datasource.ranking.hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("datasource.ranking.hibernate.format_sql"));
/* if(StringUtils.isNotEmpty(environment.getRequiredProperty("datasource.ranking.defaultSchema"))){
properties.put("hibernate.default_schema", environment.getRequiredProperty("datasource.ranking.defaultSchema"));
}*/
return properties;

}

关于java - 使用预定义的scrypt文件通过Spring自动生成sql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com