怎么在春天引导中加载初始化数据

  介绍

本篇文章给大家分享的是有关怎么在春天引导中加载初始化数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>依赖条件

弹簧引导的依赖我们就不将了,因为本例将会有数据库的操作,我们这里使用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))

怎么在春天引导中加载初始化数据