mybatis-plus提供的AutoGenerator生成出来实体类的字段顺序和表字段顺序不符,是因为查询数据字典的SQL没加排序,下面用DB2数据库举例说明。
以下是内置的DB2Query源码片段
可以看到,查询表字段时,没有排序
package com.baomidou.mybatisplus.generator.config.querys;
public class DB2Query extends AbstractDbQuery {
public String tableFieldsSql() {
return "SELECT * FROM syscat.columns " +
"WHERE tabschema=%s AND tabname='%s'";
}
// 省略其他方法
}
解决方法
使用自定义的 DB2Query,对表字段排序
// 代码生成器
AutoGenerator generator = new AutoGenerator();
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
//修复实体类字段顺序
dsc.setDbQuery(new DB2Query() {
@Override
public String tableFieldsSql() {
return "SELECT * FROM syscat.columns " +
"WHERE tabschema=%s AND tabname='%s' " +
"ORDER BY COLNO";
}
});
其他数据库也可用这种方法解决
选择对应的Query类