有一个用于嵌入式数据库(如H2)的功能,它为我们提供了使用预定义的scrypt文件自动生成SQL表的可能性。
Bean示例:
@Bean
public DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder
.setType(EmbeddedDatabaseType.H2)
.addScript("embeddedDB.sql")
.build();
}解密文件示例:
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)
);前段时间,在web上看到了一个类似的解决方案,它可以配置一个bean,在MySQL数据源的情况下自动生成SQL表(当spring context启动时)。该解决方案不包括JPA/Hibernate。不幸的是,我再也找不到这个例子了。那么,我的问题是,在MySQL数据源的情况下,如何实现Spring自动生成SQL表?
发布于 2017-03-08 00:22:22
spring boot中的属性文件
datasource.ranking.hibernate.hbm2ddl.method=createCreate将创建新表更新将离开表。将根据您的类模型创建表,然后在配置类中设置实体管理器属性
@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;}
https://stackoverflow.com/questions/42652825
复制相似问题