在我们的团队中,我们开始使用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版本中生成属性的顺序是什么?
此致 托马斯。
答案 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()函数。
杰夫巴特勒