首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Spring自动生成sql表

利用Spring自动生成sql表
EN

Stack Overflow用户
提问于 2017-03-08 00:01:30
回答 1查看 52关注 0票数 0

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

Bean示例:

代码语言:javascript
复制
@Bean
    public DataSource dataSource() {
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        return builder
                .setType(EmbeddedDatabaseType.H2)
                .addScript("embeddedDB.sql")
                .build();
    }

解密文件示例:

代码语言:javascript
复制
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表?

EN

回答 1

Stack Overflow用户

发布于 2017-03-08 00:22:22

spring boot中的属性文件

代码语言:javascript
复制
        datasource.ranking.hibernate.hbm2ddl.method=create

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

代码语言:javascript
复制
  @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;

}

代码语言:javascript
复制
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;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42652825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档