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类

博客内容讲述了在使用MyBatis-Plus的AutoGenerator时,生成的实体类字段顺序与数据库表字段顺序不一致的问题。问题源于DB2Query类中查询表字段的SQL语句未包含排序。为解决此问题,建议自定义DB2Query类,并在tableFieldsSql方法中添加'ORDER BY COLNO'进行排序。这个解决方案同样适用于其他数据库,只需修改相应的Query类。
1041

被折叠的 条评论
为什么被折叠?



