SpringData之Repository Populators的使用

需要用到Jackson或者JAXB

1. Jackson依賴引入:

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.1</version>
        </dependency>

2.實體類:

package com.example.activitydemo.entity;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.AfterDomainEventPublication;
import org.springframework.data.domain.DomainEvents;

import javax.persistence.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;


@Entity(name = "TB_TEST_PERSON")
@Data
@RequiredArgsConstructor
@NoArgsConstructor
public class TestPerson {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "ID_")
    private Integer id;

    @Column(name = "CITY_")
    @NonNull
    private String city;

    @Column(name = "NAME_")
    @NonNull
    private String name;

    @Transient
    private Date date;
}

3.resource下創建data.json文件

[ { "_class" : "com.example.activitydemo.entity.TestPerson",
  "city" : "city_test5",
  "name" : "name_test5" },
  { "_class" : "com.example.activitydemo.entity.TestPerson",
    "city" : "city_test6",
    "name" : "name_test6" } ]

data.json文件屬性說明:

會根據"_class"屬性值尋找相應的實體類,且此實體類必須是以@Entity註解的實體類

我的實體類中有city和name字段值,所以寫法如上

4.創建beans.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:repository="http://www.springframework.org/schema/data/repository"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/data/repository
    http://www.springframework.org/schema/data/repository/spring-repository.xsd">

    <repository:jackson2-populator locations="classpath:data.json" />

</beans>

通過<repository:jackson2-populator>標籤引入data.json文件位置

5.我用的springboot框架,所以還需要引入此bean.xml配置文件

@Configuration
@ImportResource(locations ={"beans.xml"})
public class SpringDataConfig {
}

6.項目啓動會自動解析data.json中內容,然後調用實體類對應的insert方法入庫。

打印日誌如下:insert into tb_test_person (city_, name_, id_) values (?, ?, ?)

 

發佈了100 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章