坑:lombok版本过低构建无法生成实现类
pom
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
</dependency>
bean1
package com.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.stereotype.Component;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
public class Book {
private String dateTimeTo;
private String name;
private String author;
private int price;
@Field(type = FieldType.Date, format = DateFormat.custom,pattern ="yyyy-MM-dd HH:mm:ss")
private String createTime;
@Field(analyzer = "ik_max_word")
private String district;
@Field(analyzer = "ik_max_word")
private String title;
}
bean2
package com.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.stereotype.Component;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
public class User1 {
private String USER_NAME;
private Date dateTime;
private String school;
private int age;
@Field(type = FieldType.Date, format = DateFormat.custom,pattern ="yyyy-MM-dd HH:mm:ss")
private String createTime;
@Field(analyzer = "ik_max_word")
private String district;
@Field(analyzer = "ik_max_word")
private String title;
}
转换映射
package com.example.service;
import com.example.pojo.Book;
import com.example.pojo.User1;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
@Mapper(componentModel = "spring")
public interface ToPO {
@Mappings({
@Mapping(source = "dateTime", target = "dateTimeTo",dateFormat = "yyyy-MM-dd"),
@Mapping(source = "USER_NAME", target = "name"),
@Mapping(source = "school", target = "author"),
@Mapping(source = "age", target = "price")
})
Book convertToBBomPhase(User1 user);
}
service
package com.example.service;
public interface ToPOService {
void toPOService();
}
service.impl
package com.example.service.impl;
import com.example.pojo.Book;
import com.example.pojo.User1;
import com.example.service.ToPO;
import com.example.service.ToPOService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class ToPOServiceImpl implements ToPOService {
@Autowired
ToPO toPO;
@Override
public void toPOService() {
User1 user = new User1();
user.setUSER_NAME("name");
user.setSchool("school");
user.setAge(111);
user.setCreateTime("");
user.setDistrict("");
user.setTitle("");
user.setDateTime(new Date());
Book book = toPO.convertToBBomPhase(user);
System.out.println(book.toString());
}
}
test
package com.example;
import com.example.service.ToPOService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class ToPoTest {
@Autowired
ToPOService toPOService;
@Test
public void toPOService(){
toPOService.toPOService();
}
}