1

私たちのチームでは、MyBatis Generator バージョン 1.3.1 の使用を開始しました。最近、バージョン 1.3.2 に移行したところ、生成された POJO の属性の順序が変更されていることがわかりました。

以前は、生成されたクラスの属性の順序はアルファベット順でしたが、変更後、XxxKey クラス、つまりテーブルの主キーに一致するクラスでは、属性の順序がアルファベット順でなくなっていることに気付きました。アルファベット順。

例:

バージョン 1.3.1:

public class PoolChargingKey {
    private String billingCycle;
    private Integer commercialGroupId;
    private Short destinationId;
    private Integer tariffPlanId;
    private String trafficCase;
    private Integer zoneId;
[...]

バージョン 1.3.2:

public class PoolChargingKey {
    private Integer commercialGroupId;
    private Integer tariffPlanId;
    private Integer zoneId;
    private Short destinationId;
    private String basicService;
    private String trafficCase;
[...]

一部のモッキング ユーティリティのリフレクションを使用して、生成された POJO にアクセスしていますが、属性の順序が変更されたため、アクセスできなくなりました。影響を受けた変更を修正することはできますが、クラスがどのように生成されるかを示していただければ幸いです。

それは可能ですか?答えはノーだと思いますが、念のため。ちなみにバージョン1.3.1の属性順はアルファベット順でした。バージョン 1.3.2 で生成される属性の順序は?

よろしく、トーマス。

4

2 に答える 2

1

属性の順序の構成に関するドキュメントは見たことがありません。

ただし、1 つの方法は、必要に応じてソース コードを変更することです。からorg.mybatis.generator.codegen.mybatis3.model.IntrospectedTable.java、リストに追加された列の順序が次のとおりであることがわかりました。

    List<IntrospectedColumn> answer = new ArrayList<IntrospectedColumn>();
    answer.addAll(primaryKeyColumns);
    answer.addAll(baseColumns);
    answer.addAll(blobColumns);

getAllColumns() メソッドで。これらの追加された列はList<IntrospectedColumn>. これらのリストString actualColumnNameIntrospectedColumnクラス内で並べ替えると、必要な順序が得られるのではないかと思いました。

于 2014-01-08T07:13:44.403 に答える
0

また、mybatis.user Google グループでこの質問をしたところ、Jeff Butler が親切に答えてくれました。

ここで変更を行いました。これは次の問題に関連しています。

https://code.google.com/p/mybatis/issues/detail?id=438

現在、フィールドは「キー順」に保たれています。これは、JDBC の DatabaseMetaData.getPrimaryKeys() 関数から返される「KEY_SEQ」フィールドで指定された順序であることを意味します。

ジェフ・バトラー

于 2014-01-09T09:12:15.227 に答える