首页 > 其他分享 >mybatis-plus-generator生成代码

mybatis-plus-generator生成代码

时间:2023-05-06 14:14:54浏览次数:40  
标签:String generator baomidou strategy static new mybatis plus com

mybatis-plus-generator 生成代码

依赖包

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--以下依赖是拓展,插件-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>

mybatis-plus-generator 自动生成代码

修改包名、作者、路径后,运行main()方法,输入表名即可,多个表用逗号隔开

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 生成数据库对应的entity, mapper, service, controller
 *
 * 运行main()方法,输入表名即可,多个表用逗号隔开
 */
public class MybatisResourcesGenerator {


    /**
     * 包名。自行修改
     */
    private static final String PACKAGE = "com.example.demo";
    /**
     * 作者。自行修改
     */
    public static final String AUTHOR = "xx";
    /**
     * 如果输出的路径不对,修改 PATH
     */
    private static final String PATH = "";

    private static final String TABLE_PREFIX = "tb_";
    private static final String ENTITY_NAME = "Entity";
    private static final String ENTITY_PACKAGE = "domain";
    private static final String SERVICE_NAME = "Service";
    
    private static final String SERVICE_PACKAGE = "service";
    private static final String SERVICE_IMPL_PACKAGE = "service.impl";

    private static final String MAPPER_PACKAGE = "dao";
    private static final String RESOURCES_MAPPER_XML = "/src/main/resources/mapper/";

    /**
     * jdbc配置。自行修改
     */
    private static final String JDBC_MYSQL = "jdbc:mysql://数据库地址:端口/xx?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true";
    private static final String MYSQL_JDBC_DRIVER = "com.mysql.jdbc.Driver";
    private static final String USER_NAME = "账号";
    private static final String PASSWORD = "密码";


    /**
     * 生成数据库对应的entity, mapper, service, controller
     *
     * 运行main()方法,输入表名即可,多个表用逗号隔开
     */
    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        //获取工程根目录
        String projectPath = System.getProperty("user.dir");
        System.out.println("projectPath=" + projectPath);

        // 全局配置
        GlobalConfig gc = getGlobalConfig(projectPath);
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = getSourceConfig();
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = getPackageConfig();
        mpg.setPackageInfo(pc);

        // 自定义配置
        InjectionConfig cfg = getInjectionConfig(projectPath);
        mpg.setCfg(cfg);
        mpg.setTemplate(new TemplateConfig().setXml(null));

        // 策略配置
        StrategyConfig strategy = getStrategy();

        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }

    /**
     * 如果输出的路径不对,修改 PATH
     * @param projectPath
     * @return
     */
    public static GlobalConfig getGlobalConfig(String projectPath) {
        GlobalConfig gc = new GlobalConfig();
        //如果输出的路径不对,修改 PATH
        gc.setOutputDir(projectPath + PATH +  "/src/main/java");

        //作者名称
        gc.setAuthor(AUTHOR);
        gc.setOpen(false);
        gc.setServiceName("%s" + SERVICE_NAME);
        gc.setEntityName("%s" + ENTITY_NAME);
        gc.setIdType(IdType.ID_WORKER);
        gc.setDateType(DateType.ONLY_DATE);
        gc.setBaseColumnList(true);
        gc.setBaseResultMap(true);
        gc.setFileOverride(true);
        return gc;
    }

    /**
     * 数据源配置
     * @return
     */
    public static DataSourceConfig getSourceConfig() {
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl(JDBC_MYSQL);
        // dsc.setSchemaName("public");
        dsc.setDriverName(MYSQL_JDBC_DRIVER);
        dsc.setUsername(USER_NAME);
        dsc.setPassword(PASSWORD);
        return dsc;
    }

    /**
     * 包配置
     * @return
     */
    public static PackageConfig getPackageConfig() {
        PackageConfig pc = new PackageConfig();
//        pc.setModuleName(scanner("模块名"));
        pc.setParent(PACKAGE);
        pc.setEntity(ENTITY_PACKAGE);
        pc.setService(SERVICE_PACKAGE);
        pc.setServiceImpl(SERVICE_IMPL_PACKAGE);
        pc.setMapper(MAPPER_PACKAGE);
        return pc;
    }

    /**
     * 自定义配置
     * @param projectPath
     * @return
     */
    public static InjectionConfig getInjectionConfig(String projectPath) {
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输入文件名称
                return projectPath + PATH + RESOURCES_MAPPER_XML
                        + tableInfo.getMapperName() + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        return cfg;
    }

    /**
     * 策略配置
     * @return
     */
    public static StrategyConfig getStrategy() {
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
//        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
        strategy.setInclude(scanner("表名"));
//        strategy.setSuperEntityColumns("id_");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(TABLE_PREFIX);
        strategy.setLogicDeleteFieldName("is_delete");
        strategy.setVersionFieldName("op_version");

        List<TableFill> tableFillList = new ArrayList<>();
        tableFillList.add(new TableFill("create_time", FieldFill.INSERT));
        tableFillList.add(new TableFill("update_time", FieldFill.UPDATE));
        strategy.setTableFillList(tableFillList);
        return strategy;
    }

    /**
     * <p>
     * 读取控制台内容
     * </p>
     */
    public static String[] scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入" + tip + ":");
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotBlank(ipt)) {
                if(ipt.contains(",")) {
                    return ipt.split(",");
                } else {
                    return new String[] {ipt};
                }
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }
}


标签:String,generator,baomidou,strategy,static,new,mybatis,plus,com
From: https://www.cnblogs.com/expiator/p/17377064.html

相关文章

  • iBatis与MyBatis区别
     iBatis框架的主要优势:1、iBatis封装了绝大多数的JDBC样板代码,使得开发者只需关注SQL本身,而不需要花费精力去处理例如注册驱动,创建Connection,以及确保关闭Connection这样繁杂的代码。2、从iBatis到MyBatis,不只是名称上的变化,MyBatis提供了更为强大的功能,同时并没有损......
  • 自定义mybatis插件之全局数据过滤
    目录一、介绍二、实现三、效果四、源码一、介绍通过开发mybatis的插件来实现对全局的sql查询语句进行拦截,并新增全局的过滤条件做到无感知的数据过滤,比如全局过滤某个租户的数据。二、实现实现思路1、通过mybatis的拦截器拦截所有查询的sql2、使用Druid里面的工具类解析sq......
  • MyBatis 配置详解
    目录mybatis-config.xml核心配置文件1.environments元素1.1子元素environment1.2transactionManager事务管理器(共两种)2.mappers元素(定义映射SQL语句文件)3.properties4.typeAliases(定义别名)其他配置【设置】mybatis-config.xml核心配置文件mybatis-config.xml包含的......
  • Spring整合Mybatis
    1、Spring整合Mybatis思路分析1.1、环境准备在准备环境的过程中,我们也来回顾下Mybatis开发的相关内容:步骤1:准备数据库表Mybatis是来操作数据库表,所以先创建一个数据库及表createdatabasespring_dbcharactersetutf8;usespring_db;createtabletbl_account(id......
  • 基于SqlSugar的开发框架循序渐进介绍(29)-- 快速构建系统参数管理界面-Vue3+ElementPlus
    在随笔《基于SqlSugar的开发框架循序渐进介绍(28)--快速构建系统参数管理界面》中介绍了基于SqlSugar开发框架,构建系统参数管理的后端API部分,以及WInform界面部分内容,本篇随笔介绍基于Vue3+ElementPlus的前端界面开发过程。1、Winform端界面的回顾系统参数的信息,设计为包含一个大......
  • 嵌入式linux移植——ptlib、H323plus、oh323tut 交叉编译
    前言:上一篇博客主要讲了比较多原理的东西,也是我解决问题时掌握到的一些东西和重要依据,这篇博客接着上一篇博客嵌入式linux移植——ptlib、H323plus交叉编译I继续往下讲~【补充】开发环境:Ubuntu16.04、Hi3531a;编译工具链:arm-hisiv300-linux; 【一个刷存在感而且想要骗赞......
  • mybatis批量插入支持默认值和自定义id生成策略的免写sql插件
    最近做项目时用了免写sql的插件但是发现批量操作不满足现有需求。所以,在原有基础之上扩展了批量的操作支持[支持插入默认值和自定义id生成策略]。使用方法如下:一:在pom文件中引入jar配置<dependency><groupId>io.gitee.wang_ming_yi</groupId><artifactId>easy_mapper</......
  • Mybatis映射
        转译小于号字符:<       CDATA区:大写CD       多条件动态sql查询   单条件动态sql查询 添加:   修改  删除功能: 批量删除  参数传递:......
  • Mybatis中的动态 SQL
    一、MyBatis动态sql是什么?1.动态SQL是MyBatis的强大特性之一。在JDBC或其它类似的框架中,开发人员通常需要手动拼接SQL语句。根据不同的条件拼接SQL语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态SQL恰好......
  • C Primer Plus 第六版
      取指执行,1秒钟执行10个小目标!!寄存器:存储指令、存储指令地址等指令一般做什么用?移动数据,如从内存移动到寄存器......