zoukankan      html  css  js  c++  java
  • SpringBoot 使用 MyBatisPlus-Generator 快速生成model实体类

    概述

    找了一圈,没找到更简单的生成model的工具。
    然后根据官网demo改写了一下,原文是交互式运行,我写成直接运行,然后把配置文件写在了上边,entity名字改成了model。
    其他需要自定义的可以查官网属性 https://mp.baomidou.com/config/generator-config.html ,很简单

    还有,因为生成的数据会有占位符,数据库表和字段最好有注释,否则空白一片很难看,也为了养成好习惯吧!
    还有,注意启动类需加上@MapperScan("com.example.demo.mapper")注解,否则会启动失败!

    写法

    maven pom文件增加依赖

    <!-- mybatis-plus-generator -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-generator</artifactId>
      <version>3.3.2</version>
    </dependency>
    <!-- freemarker模板 -->
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.30</version>
    </dependency>
    

    新建 util/MyBatisPlusGenerater.java 文件,把以下内容粘进去,头部改成自己配置,然后直接运行main方法,done!

    package com.example.demo.util;
    
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.GlobalConfig;
    import com.baomidou.mybatisplus.generator.config.PackageConfig;
    import com.baomidou.mybatisplus.generator.config.StrategyConfig;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    
    public class MyBatisPlusGenerater {
        static String packageName = "com.example.demo"; // 当前包名
        static String author = "MyBatisPlusGenerater"; // 作者
        static String sqlUrl = "mysql://localhost/"; // 数据库类型及地址
        static String sqlDb = "database"; // 数据库名
        static String sqlUser = "root";
        static String sqlPassword = "123456";
        static String table = "t_user,t_device"; // 表,用逗号隔开
    
        public static void main(String[] args) {
            // 代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
            gc.setAuthor(author);
            gc.setOpen(false);
            gc.setServiceName("%sService");
            mpg.setGlobalConfig(gc);
    
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:" + sqlUrl + sqlDb + "?useUnicode=true&useSSL=false&characterEncoding=utf8");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername(sqlUser);
            dsc.setPassword(sqlPassword);
            mpg.setDataSource(dsc);
    
            // 包配置
            PackageConfig pc = new PackageConfig();
            pc.setParent(packageName);
            pc.setEntity("model");
            mpg.setPackageInfo(pc);
    
            // 配置模板
            TemplateConfig templateConfig = new TemplateConfig();
            templateConfig.setXml(null); // 不生成MapperXML
            mpg.setTemplate(templateConfig);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            strategy.setRestControllerStyle(true);
            strategy.setEntityTableFieldAnnotationEnable(true);
    
            strategy.setInclude(table.split(","));
            strategy.setControllerMappingHyphenStyle(true);
            strategy.setTablePrefix("t_"); // 表前缀,如t_user,没有就注释掉此行
            mpg.setStrategy(strategy);
            mpg.setTemplateEngine(new FreemarkerTemplateEngine());
            mpg.execute();
        }
    
    }
    

    最终生成的结构如图

    ➜  demo tree
    ├── controller
    │   ├── DeviceController.java
    │   └── UserController.java
    ├── mapper
    │   ├── DeviceMapper.java
    │   └── UserMapper.java
    ├── model
    │   ├── Device.java
    │   └── User.java
    ├── service
    │   ├── DeviceService.java
    │   ├── UserService.java
    │   └── impl
    │       ├── DeviceServiceImpl.java
    │       └── UserServiceImpl.java
    └── util
        └── MyBatisPlusGenerater.java
    
  • 相关阅读:
    【矩阵】
    关于集合的思路
    TSQL生成Combguid
    ServiceLocator是反模式
    使用表达式树创建对象
    TeamCity配置笔记
    AutoMapper映射ExpressionTree
    Automapper扩展方法
    Cache&Session Viewer
    Orchard源码:Logging
  • 原文地址:https://www.cnblogs.com/36bian/p/13182248.html
Copyright © 2011-2022 走看看