项目初始化,自动执行创建数据库、新建表、导入初始数据的示例demo
关键点
借助DataSourceInitializer的DatabasePopulator来实现填充、初始化或清理数据库的策略
相关方法
public void addScript(Resource script)
添加一个用于初始化或清理数据库的外部资源
public void addScripts(Resource... scripts)
添加多个用于初始化或清理数据库的外部资源
public void setScripts(Resource... scripts)
设置用于初始化或清理数据库的外部资源,并替代之前所有的添加的资源
public void setSqlScriptEncoding(String sqlScriptEncoding)
如果sql脚本与项目编码不一致,用于设置sql脚本的编码
public void setSeparator(String separator)
设置脚本中sql的分隔符,默认是英文分号(“;”)
public void setCommentPrefix(String commentPrefix)
设置注释的前缀,默认是两个中划线(“--”)
public void setBlockCommentStartDelimiter(String blockCommentStartDelimiter)
设置段落注释的开始标记,默认是“/*”
public void setBlockCommentEndDelimiter(String blockCommentEndDelimiter)
设置段落注释的结束标记,默认是“*/”
public void setContinueOnError(boolean continueOnError)
设置当出错是是否继续,默认是false即不继续
public void setIgnoreFailedDrops(boolean ignoreFailedDrops)
设置是否忽略删除错误,默认是false即不忽略
public void populate(Connection connection) throws ScriptException
进行初始化或清理数据库。
public void execute(DataSource dataSource) throws ScriptException
根据给定的数据源执行ResourceDatabasePopulator
当库不存在时,SpringBoot配置的数据库的url可能就直接连不上;因此我们可以考虑先进性探测,所数据库不存在,则创建一个数据库
select schema_name from information_schema.schemata where schema_name = 数据库名;
-- 若没有,则尝试创建
create database if not exist 数据库名;再项目启动之后,验证下是否库表初始化完成
实现接口 ApplicationRunner