mybatis-plus代码生成器(旧)

mybatis-plus代码生成器(旧)

代码生成器(旧) | MyBatis-Plus (baomidou.com)

代码生成器配置旧 | MyBatis-Plus (baomidou.com)

适用版本:mybatis-plus-generator 3.5.1 以下版本,3.5.1 及以上的请参考 代码生成器新

代码生成器主要是指AutoGenerator,通过配置GlobalConfig、DataSource、PackageInfo、Strategy和TemplateEngine来执行。

样例代码gitee地址

GlobalConfig(全局配置)

主要是设置作者名称、各个层的文件名名称以及是否设置通用查询结果列和通用查询映射结果等

样例代码

public class GlobalConfigUtil {
  public static GlobalConfig getGlobalConfig() {
    // 全局配置
    GlobalConfig gc = new GlobalConfig();
    // 获取当前项目的绝对路径
    String projectPath = System.getProperty("user.dir");
    // 生成文件的输出目录
    gc.setOutputDir(projectPath)
        // 设置作者
        .setAuthor(scanner("作者名称"))
        // 是否打开输出目录
        .setOpen(false)
        // 设置通用查询结果列 <sql id="Base_Column_List"></sql>
        .setBaseColumnList(true)
        // 设置通用查询映射结果 <resultMap> 一般不设置,常规的mybatis会自动映射,带有对象的集合映射自己写
        .setBaseResultMap(true)
        // service名称
        .setServiceName("I%sService")
        // serviceImpl名称
        .setServiceImplName("%sServiceImpl")
        // entity名称
        .setEntityName("%sEntity")
        // 是否覆盖原有文件
        .setFileOverride(true)
        // 实体属性 Swagger2 注解,false的话则是生成注解
        .setSwagger2(false);
    return gc;
  }
}

DataSource(数据源配置)

这里顾名思义主要是配置数据库信息,使其能连上相应的数据库

样例代码

public class DataSourceConfigUtil {
  public static DataSourceConfig getDataSourceConfig() {
    DataSourceConfig dsc = new DataSourceConfig();
    // 设置数据库类型
    dsc.setDbType(DbType.MYSQL)
        .setUrl(
            "jdbc:mysql://localhost:3306/"
                + scanner("请输入mysql数据库名称")
                + "?useUnicode=true&useSSL=false&characterEncoding=utf8")
        .setDriverName("com.mysql.cj.jdbc.Driver")
        .setUsername(scanner("请输入mysql用户名"))
        .setPassword(scanner("请输入mysql密码"));
    return dsc;
  }
}

注意点

这里主要有一个类型转换的字段typeConvert

  • 类型转换
  • 默认由 dbType 类型决定选择对应数据库内置实现

实现 ITypeConvert 接口自定义数据库 字段类型 转换为自己需要的 java 类型,内置转换类型无法满足可实现 IColumnType 接口自定义

如针对Oracle种的date字段需要转换,因为默认会转换为java.time.LocalDateTime,根据需求要改为java.util.Date

.setTypeConvert(new OracleTypeConvert() {
                    @Override
                    public IColumnType processTypeConvert(GlobalConfig globalConfig, 
                                                          String fieldType) {
                        if ("date".equalsIgnoreCase(fieldType)) {
                            return DbColumnType.DATE;
                        }
                        return super.processTypeConvert(globalConfig, fieldType);
                    }
                });

PackageInfo(包配置)

主要是配置路径信息和包名称

样例代码

public class PackageConfigUtil {
  public static PackageConfig getPackageConfig() {
    // 包配置
    // 路径配置信息
    String basePath = "GeneratorSuccess/src/main";
    Map<String, String> pathInfo = new HashMap<>(6);
    // mapper脚本路径
    pathInfo.put(ConstVal.XML_PATH, basePath + "/java/com/gen/mapper");
    // mapper接口路径
    pathInfo.put(ConstVal.MAPPER_PATH, basePath + "/java/com/gen/mapper");
    // service接口路径
    pathInfo.put(ConstVal.SERVICE_PATH, basePath + "/java/com/gen/service");
    // serviceImpl接口路径
    pathInfo.put(ConstVal.SERVICE_IMPL_PATH, basePath + "/java/com/gen/service/impl");
    // entity路径
    pathInfo.put(ConstVal.ENTITY_PATH, basePath + "/java/com/gen/entity");
    // controller路径
    pathInfo.put(ConstVal.CONTROLLER_PATH, basePath + "/java/com/gen/controller");
    PackageConfig pc = new PackageConfig();
    pc.setParent("com.gen");
    // 设置包名
    pc.setXml("mapper")
        .setMapper("mapper")
        .setService("service")
        .setServiceImpl("service.impl")
        .setEntity("entity")
        .setController("controller")
        .setPathInfo(pathInfo);
    return pc;
  }
}

Strategy(策略配置)

主要是配置数据库映射到实体的命名策略、表前缀、逻辑删除字段、是否为lombok模型等

样例代码

public class StrategyConfigUtil {
  public static StrategyConfig getStrategyConfig() {
    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    // 设置逻辑删除字段名称
    strategy.setLogicDeleteFieldName("is_deleted");
    // 数据库表映射到实体的命名策略
    strategy.setNaming(NamingStrategy.underline_to_camel);
    // 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    // 是否为 lombok 模型
    // 3.3.2 以下版本默认生成了链式模型,3.3.2 以后,默认不生成,如有需要,请开启 chainModel
    strategy.setEntityLombokModel(true);
    // 生成 @RestController 控制器
    strategy.setRestControllerStyle(true);
    strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
    // 驼峰转连字符
    strategy.setControllerMappingHyphenStyle(true);
    // 定义表前缀
    strategy.setTablePrefix("t_");
    return strategy;
  }
}

注意点

如果不是继承默认的mp自带的BaseMapper、IService和ServiceImpl,需要在这个地方进行自定义,要精确到包名。

// 自定义继承的controller类全称,带包名
   strategy.setSuperControllerClass();
// 自定义继承的Service类全称,带包名
   strategy.setSuperServiceClass();
//自定义继承的ServiceImpl类全称,带包名
   strategy.setSuperServiceImplClass();
//自定义继承的ServiceImpl类全称,带包名
   strategy.setSuperEntityClass();
// 自定义继承的mapper类全称,带包名
   strategy.setSuperMapperClass();

TemplateEngine(模板引擎)

这个部分可以直接用mp自带的,ftl为freemarker的模板,vm为velocity的模板,若要自定义模板可参考其他资料这部分还在学习中。

模板引擎

配置完成

配置完成后在main方法里执行即可

public static void main(String[] args) {
    // 代码生成器
    AutoGenerator autoGenerator = new AutoGenerator();

    autoGenerator
        // 获取全局配置
        .setGlobalConfig(GlobalConfigUtil.getGlobalConfig())
        // 获取数据源配置
        .setDataSource(DataSourceConfigUtil.getDataSourceConfig())
        // 获取包配置
        .setPackageInfo(PackageConfigUtil.getPackageConfig())
        // 获取策略配置
        .setStrategy(StrategyConfigUtil.getStrategyConfig())
        // 获取模板引擎
        .setTemplateEngine(new VelocityTemplateEngine())
        // 执行
        .execute();
  }

结果演示

输入
输入
结果
结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值