450 次浏览
  1. 问题背景:使用mapstruct编写接口,接口内容类似如下:
    
    @Mapper 
    public interface CarMapper {
     
        CarMapper INSTANCE = Mappers.getMapper( CarMapper.class ); 
     
        @Mapping(source = "numberOfSeats", target = "seatCount")
        CarDto carToCarDto(Car car); 
    }
    
    
    •  我的方法:将entity映射为po对象
    • 我的用法:springboot工程在service实现类中用@Autowired注入该接口并调用方法报错:绑定异常,找不到xxx包.xxx接口.fromEntityToPo()方法
    • 查看官网手册发现调用转换方法的写法如下:
      
      @Test
      public void shouldMapCarToDto() {
          //given
          Car car = new Car( "Morris", 5, CarType.SEDAN );
       
          //when ,直接用接口名.实例对象.方法名()调用
          CarDto carDto = CarMapper.INSTANCE.carToCarDto( car );
       
          //then
          assertThat( carDto ).isNotNull();
          assertThat( carDto.getMake() ).isEqualTo( "Morris" );
          assertThat( carDto.getSeatCount() ).isEqualTo( 5 );
          assertThat( carDto.getType() ).isEqualTo( "SEDAN" );
      }
      
      
  2. 解决方案,按官网调用的方式调起方法,无绑定异常
  3. 运行工程,插入一个实体报错:

    ReflectionException: Could not set property ‘id‘ of x argument type mismatch

    • 参考博文解决,备份博文内容:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注