本篇文章给大家分享的是有关怎么在春天引导中加载初始化数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>依赖条件强>
弹簧引导的依赖我们就不将了,因为本例将会有数据库的操作,我们这里使用H2内存数据库方便测试:
& lt; dependency> ,,,,,& lt; groupId> com.h3database ,,,,,& lt; artifactId> h3 ,,,,,& lt; scope> runtime ,,,& lt;/dependency>
我们需要使用JPA来创建实体:
@ Entity public class  Country { , ,@ id @GeneratedValue才能(strategy =,身份) private 才能Integer id; ,, @ column才能(nullable =,假) private 才能;String 名称; ,//才能…… }
我们这样定义存储库:
public interface CountryRepository extends CrudRepository<国家,Integer>, { List<才能;Country>, findByName (String 名称); }
如果这时候我们启动弹簧引导程序,将会自动创建表。
<强> data.sql文件强>
上面我们创建好了数据表格,我们可以使用数据。sql来加载文件:
INSERT INTO country (名字),VALUES (& # 39;印度# 39;); INSERT INTO  country (名字),VALUES (& # 39;巴西# 39;); INSERT INTO  country (名字),VALUES (& # 39;美国# 39;); INSERT INTO  country (名字),VALUES (& # 39;意大利# 39;);
在数据。sql文件中我们插入了4条数据,可以写个测试例子测试一下:
@RunWith (SpringRunner.class) @SpringBootTest (classes =, LoadIniDataApp.class) public class  SpringBootInitialLoadIntegrationTest { @ autowired才能 private 才能;CountryRepository  countryRepository; @Test才能 public 才能;void  testInitDataForTestClass (), { ,,,assertequal (4, countryRepository.count ()); ,,} }
<>强模式。sql文件强>
有时候我们需要自定义数据库的模式,这时候我们可以使用到schema.sql文件。
先看一个模式。sql的例子:
CREATE TABLE country ( ,,id INTEGER ,, NOT NULL AUTO_INCREMENT, name 才能VARCHAR (128), NOT 空, PRIMARY 才能;KEY (id) );
弹簧引导会自动加载这个模式文件。
我们需要关闭弹簧引导的模式自动创建功能以防冲突:
spring.jpa.hibernate.ddl-auto=没有
spring.jpa.hibernate.ddl-auto有如下几个选项:
- <李>
创建:首现先下降有的表,然后创建新表的
李> <李>更新:这个模式不会删除现有的表,它会比较现有的表和新的注解或者xml配置是否一致,然后更新。
李> <李>create-drop:和创建很类似,不同的是会在程序运行完毕后自动放弃掉表。通常用在单元测试中。
李> <李>验证:只会做表是否存在的验证,不存在则会报错。
李> <李>没有:关闭ddl自动生成功能。
李>如果弹簧引导没有检测到自定义的模式管理器的话,则会自动使用create-drop模式,否则使用没有模式。
<强> @sql注解强>
@sql是测试包中的一个注解,可以显示的导入要执行的sql文件,它可以用在课堂上或者方法之上,如下所示:
, @Test @Sql才能({“类路径:new_country.sql"}) public 才能;void  testLoadDataForTestCase (), { ,,,assertequal (6, countryRepository.count ()); 以前,,}>上面的例子将会显示的导入类路径中的new_country。sql文件。
@Sql有如下几个属性:
- <李>
配置:用来配置sql脚本,我们在下面的@SqlConfig详细讲解。
李> <李>executionPhase:可以选择脚本是在BEFORE_TEST_METHOD或者AFTER_TEST_METHOD来执行。
李> <李>语句:可以接受内联的sql语句
李> <李>脚本:可以指明要执行脚本的路径
李> <强> @SqlConfig注解强>
@SqlConfig主要用在类级别或者用在@Sql注解的配置属性中:
,, @Sql (scripts =,{“类路径:new_country2.sql"}, ,,,,,config =, @SqlConfig (=encoding “utf-8",, transactionMode =, SqlConfig.TransactionMode.ISOLATED))怎么在春天引导中加载初始化数据