Spring Dozerでマッピングするサンプル

SpringのDozerでマッピングするサンプルです。
(確認環境:Spring 5.3.7、JDK 8、STS 4 )

目次

サンプル Dozerでマッピングする
  Dozerを使用するファイル(SyainService.java)
  データのクラス(Syain.javaとSyainBkup.java)
  設定ファイル(pom.xml)

Dozerでマッピングする

SyainService.javaでSyainクラスのインスタンスを生成してデータをセットしDozerでSyainからSyainBkupにデータを移送します。

Dozerとは

オブジェクトから別のオブジェクトへ再帰的にデータをコピーするJava Bean to Java Beanマッパーです。詳細は公式ページ参照願います。

https://dozermapper.github.io/gitbook/

Dozerを使用するファイル(SyainService.java)

package com.example.test1;

import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
import com.github.dozermapper.core.DozerBeanMapperBuilder;
import com.github.dozermapper.core.Mapper;

@Service
public class SyainService {
	public void copySyain() {
		Syain syain = new Syain();
		syain.setId("1001");
		syain.setName("suzuki");
		List<String> list1 = new ArrayList<>();
		list1.add("kihon");
		list1.add("database");
		syain.setShikaku(list1);
		
		SyainBkup syainBkup = new SyainBkup();

		Mapper mapper = DozerBeanMapperBuilder.buildDefault();
		mapper.map(syain, syainBkup);
		
//		syainBkup.setId(syain.getId());
//		syainBkup.setName(syain.getName());
//		syainBkup.setShikaku(syain.getShikaku());

		System.out.println(syainBkup.getId()); //1001
		System.out.println(syainBkup.getName()); //suzuki
		System.out.println(syainBkup.getShikaku()); //[kihon, database]
	}
}

12~18行目は、Syainクラスのインスタンスにデータをセットしています。
23行目は、mapメソッドで移送元(syain)から移送先(syainBkup)にデータをセットします。
22,23行目は、25~27行目と同じ意味になります。

 

データのクラス(Syain.javaとSyainBkup.java)

2つのクラスともデータ型と項目名は同じにしています。異なる場合は設定が必要です。

Syain.java

package com.example.test1;

import java.util.List;

public class Syain {
	private String id;
	private String name;
	private List<String> shikaku;
	
//** getterとsetterは省略
}

8行目は、リストです。

SyainBkup.java

package com.example.test1;

import java.util.List;

public class SyainBkup {
	private String id;
	private String name;
	private List<String> shikaku;
	
//** getterとsetterは省略
}

8行目は、リストです。

設定ファイル(pom.xml)

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.3.7</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.github.dozermapper/dozer-core -->
		<dependency>
			<groupId>com.github.dozermapper</groupId>
			<artifactId>dozer-core</artifactId>
			<version>6.5.0</version>
		</dependency>
	</dependencies>

pom.xml設定後に「SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".」の警告が出るためクラスパスにlogback-classic-1.2.3.jarとlogback-core-1.2.3.jarも追加しました。

関連の記事

SpringBoot フォームで入力チェック(バリデーション)

△上に戻る