LoginSignup
0
0

More than 1 year has passed since last update.

JMapepr利用方法

Posted at

セットアップ

依存関係に以下を追加してください

CR2です。versionに注意してください。

<dependency>
       <groupId>com.googlecode.jmapper-framework</groupId>
       <artifactId>jmapper-core</artifactId>
       <version>1.6.1.CR2</version>
</dependency>

利用方法

1.マッピングしたいBeanとマッピング元のBeanを作成
マッピング元

public class DToVCsvReadEntity {
    
    private long id;
    
    private String email;
}

マッピング先

public class DToVChangeValueEntity {
    @JMap
    private long id;

    @JMap("email")
    private String username;
}

2.下記の関数を用いマッピングを行う(元:DToVCsvReadEntity、対象:DToVChangeValueEntity)

JMapper<DToVChangeValueEntity,DToVCsvReadEntity> EntityMapper = new JMapper<>(DToVChangeValueEntity.class,DToVCsvReadEntity.class);

マッピング元と対象のBenaの変数名が一致している場合、そのままマッピングできます。
マッピング元と対象のBeanの変数名が一致していないものをマッピングしたい場合、以下のように記述します。

@JMap("hoge")

別の値に変換するなど、処理をBEAN内部に書きたい場合は以下を利用

@JMap
private String dateOfReceipt;
@JMapConversion(from={"dateOfReceipt"},to= {"dateOfReceipt"})
    public String upDatetimeTransrateDateOfReceipt(LocalDate dateOfReceipt) {
        String upDatetimeString = dateOfReceipt.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
        return upDatetimeString;
    }

マッピングする値を別のマッピングする値に変える処理を行いたい場合

    private Integer mileage;
    
    
    public Integer mileageTransrate() {
        if(mileage<=0) {
            return MileageMile;
        }
        else {
            return mileage;
        }
    }
    @JMapAccessor(name="mileage",get="mileageMileTransrate")
    @JMap("mileage")
    private Integer mileageMile;

get内の関数が動いてからマッピングされる。

↓こんな感じで一つのマッピング元から複数に分けることもできます。

String a
@JMapConversion(from={"hoge","","}, to={"1"})
    public int conversion(LocalDate birthDate){
    
    	String a=birthDate+1;
    	
    	
        return Period.between(birthDate, LocalDate.now())
          .getYears();
    }

@JMapConversion(from={"hoge"}, to={"2"})
    public int conversion(LocalDate birthDate){
    
    	String a=birthDate+1;
    	
    	
        return Period.between(birthDate, LocalDate.now()).getYears();
    }
@JMapConversion(from={"birthDate"}, to={"age"})
    public int conversion(LocalDate birthDate){
    
    	String a=birthDate+1;
    	
    	
        return Period.between(birthDate, LocalDate.now())
          .getYears();
    }

Java7以降で利用しようとすると、マッピング時にエラーが出力されるため、プログラムを走らせる際に
eclipseの場合、VM引数に下記の記述を加えて下さい
VM引数に追加 --add-opens java.base/java.lang=ALL-UNNAMED
多分これで動かせるようになるはず...

JMapAccessor
https://code.google.com/archive/p/jmapper-framework/wikis/CustomAccessors.wiki

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0