Mybatis-Plus代码生成器AutoGenerator生成的字段乱序解决方法

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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类
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值