MyBatis生成的pojos中的属性顺序

时间:2014-01-07 18:14:28

标签: mocking mybatis pojo mybatis-generator

在我们的团队中,我们开始使用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版本中生成属性的顺序是什么?

此致 托马斯。

2 个答案:

答案 0 :(得分: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 actualColumnName课程中的IntrospectedColumn对这些列表进行排序,也许你可以得到你想要的订单。

答案 1 :(得分:0)

我也在mybatis.user谷歌小组中提出过这个问题,杰夫巴特勒对此表示赞同:

  

我们确实在这里做了一些改变。这与以下问题有关:

     

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

     

现在字段保持“按键顺序”。这意味着他们在   从JDBC返回的“KEY_SEQ”字段指定的顺序   DatabaseMetaData.getPrimaryKeys()函数。

     

杰夫巴特勒