package com.zhang;
import com.zhang.entity.Animal;
import com.zhang.mapper.AnimalMapper;
import lombok.Builder;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.junit.runner.RunWith;
import org.springframework.beans.BeanUtils;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
/**
* @Author lgz
* @Description
* @Date 2022/6/4.
*/
@Slf4j
@SpringBootTest(classes = {App.class})
@RunWith(SpringRunner.class)
public class Test {
@Resource
private AnimalMapper animalMapper;
@org.junit.Test
public void test() {
AnimalDTO animalDTO = AnimalDTO.builder().name("大肥狗").age(2).hobby("骨头").build();
System.out.println(new AnimalConvert().convert(animalDTO));
}
}
@Data
@Builder
class AnimalDTO {
private String name;
private String hobby;
private Integer age;
}
interface ConvertDTO<S, T> {
T convert(S s);
}
class AnimalConvert implements ConvertDTO<AnimalDTO, Animal> {
@Override
public Animal convert(AnimalDTO o) {
Animal target = new Animal();
BeanUtils.copyProperties(o, target);
return target;
}
}
使用静态内部类的方式也可以达到相同的效果:
package com.zhang;
import com.zhang.entity.Animal;
import com.zhang.mapper.AnimalMapper;
import lombok.Builder;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.junit.runner.RunWith;
import org.springframework.beans.BeanUtils;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
/**
* @Author lgz
* @Description
* @Date 2022/6/4.
*/
@Slf4j
@SpringBootTest(classes = {App.class})
@RunWith(SpringRunner.class)
public class Test {
@Resource
private AnimalMapper animalMapper;
@org.junit.Test
public void test() {
AnimalDTO animalDTO = AnimalDTO.builder().name("大肥狗").age(2).hobby("骨头").build();
System.out.println(new AnimalConvert().convert(animalDTO));
}
private static class AnimalConvert implements ConvertDTO<AnimalDTO, Animal> {
@Override
public Animal convert(AnimalDTO o) {
Animal target = new Animal();
BeanUtils.copyProperties(o, target);
return target;
}
}
}
@Data
@Builder
class AnimalDTO {
private String name;
private String hobby;
private Integer age;
}
interface ConvertDTO<S, T> {
T convert(S s);
}