Mybatis-plus代码生成器多表同时生成

第一种:

一,maven依赖:

  <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

二,生成类的代码:

public class Generate{
    public static void main(String[] args) {
        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        //gc.setOutputDir(projectPath + "/src/main/java");
        gc.setOutputDir("当前模块的java目录的绝对路径");
        //例如:E:\idea_wspace\service\service_live\src\main\java

        //这个是防止生成的service 是IService。
        gc.setServiceName("%sService");	//去掉Service接口的首字母I
        gc.setAuthor("xiaokai");
        gc.setOpen(false);
        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/数据库");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        //pc.setModuleName("live");       //模块名
        pc.setParent("前缀");  //例如:com.demo
        pc.setController("controller");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();

        //这个设置是指定依据哪个表来生成相应的代码。有几个表就写几个。
        //strategy.setInclude("subject");
        strategy.setInclude("live_course","live_course_account","live_course_config","live_course_description","live_course_goods","live_visitor");

        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);

        // 6、执行
        mpg.execute();
    }
}

第二种:

一,Maven依赖配置:

  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>

二,创建一个类,运行代码

package com.seckill.seckilldemo;

import com.baomidou.mybatisplus.annotation.DbType;
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.StringUtils;
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.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

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

public class Main {
    public static void main(String[] args) {
        //创建代码生成器对象
        AutoGenerator autoGenerator=new AutoGenerator();

        // 1.全局配置
        GlobalConfig globalConfig=new GlobalConfig();

        globalConfig.setActiveRecord(true)//是否支持AR模式
                .setAuthor("Jackwong")//作者(需要更换)
                .setOutputDir("E:\\idea_wspace\\SeckillDemo\\src\\main\\java")//生成路径(需要更换)
                .setOpen(false)//是否打开资源管理器
                .setFileOverride(true)//生成文件覆盖
                .setIdType(IdType.AUTO)//主键策略
                .setServiceName("%sService")//设置生成service接口的名字首字母是否为I
                .setDateType(DateType.ONLY_DATE)
                .setBaseResultMap(true)
                .setBaseColumnList(true);
        autoGenerator.setGlobalConfig(globalConfig);

        //2.设置数据源
        DataSourceConfig dsc=new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/seckill?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF-8");     //(需要更换)
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        autoGenerator.setDataSource(dsc);


        //3.包的配置
        PackageConfig pc=new PackageConfig();
        //  pc.setModuleName("mybatisplus");//设置模块名
        pc.setParent("com.seckill.seckilldemo"");   //(需要更换)
        pc.setEntity("entity");   //(需要更换)
        pc.setMapper("mapper");  //(需要更换)
        pc.setXml("mapper.xml");  //(需要更换)
        pc.setService("service");  //(需要更换)
        pc.setController("controller");  //(需要更换)
        pc.setServiceImpl("service.impl");  //(需要更换)
        autoGenerator.setPackageInfo(pc);

        //4.策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);		//自动lombok
        strategy.setRestControllerStyle(true);		
        strategy.setControllerMappingHyphenStyle(true);	


        strategy.setLogicDeleteFieldName("deleted");//设置逻辑删除的名字
        // 自动填充配置
        TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);//设置自动填充创建时间
        TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);//设置自动填充修改时间
        ArrayList<TableFill> tableFills = new ArrayList<>();
        tableFills.add(gmtCreate);
        tableFills.add(gmtModified);
        strategy.setTableFillList(tableFills);
        // 乐观锁
        strategy.setVersionFieldName("version");
        strategy.setRestControllerStyle(true);	//controller层使用rest风格

        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
        autoGenerator.setStrategy(strategy);

        autoGenerator.execute();
    }
    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    }
}

如下输入数据库的多个表名同时生成:
在这里插入图片描述
生成速度还是挺快的。
在这里插入图片描述

踩坑:

如果自己已经先创建好了前缀包,想要将生成的包和类放在这个包下,全局配置的代码部分的输出路径不能设置到这个前缀包下,依然要设置为到java包为止。
假设已经提前建好了前缀包:
在这里插入图片描述
输出路径到java 即可。
在这里插入图片描述
然后包配置部分设置这个前缀包名:
在这里插入图片描述

如果输出路径设置这个前缀包,会重复创建,而且生成的类中的package 没有前缀包名:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RuoYi若依管理系统是一个基于SpringBoot的权限管理系统,代码易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用。 RuoYi若依管理系统功能: 1、用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2、部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持权限。 3、岗位管理:配置系统用户所属担任职务。 4、菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5、角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6、字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7、参数管理:对系统动态配置常用参数。 8、通知公告:系统通知公告信息发布维护。 9、操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 10、登录日志:系统登录日志记录查询包含登录异常。 11、在线用户:当前系统中活跃用户状态监控。 12、定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13、代码生成:前后端代码的生成java、html、xml、sql)支持CRUD下载 。 14、系统接口:根据业务代码自动生成相关的api接口文档。 15、服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 16、在线构建器:拖动单元素生成相应的HTML代码。 17、连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。   RuoYi若依管理系统 更新日志: v4.6.1 新增IE浏览器版本过低提示页面 新增详细信息tab页签方式 新增解锁屏幕打开上次页签 数据监控默认账户密码防止越权访问 新增格示例(导出选择列) 个人信息添加手机&邮箱重复验证 个人中心刷新后样式问题 操作日志返回参数添加非空验证 velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞 子模板默认日期格式化 代码生成预览语言根据后缀名高亮显示 代码生成主子相同字段导致数据问题 升级SpringBoot到最新版本2.2.13 升级shiro到最新版1.7.1 阻止身份认证绕过漏洞 升级bootstrapTable到最新版本v1.18.2 升级bootstrapTable相关组件到最新版本v1.18.2 升级fastjson到最新版1.2.75 升级druid到最新版本v1.2.4 升级oshi到最新版本v5.6.0 修改ip字段长度防止ipv6地址长度不够 搜索建议示例选择后隐藏列 主子示例增加初始化数据 优化Excel导入增加空行判断 修复横向菜单无法打开页签问题 修复导入数据为负浮点数时,导入结果会丢失精度问题 优化更多操作按钮左侧移入内容闪现消失情况 修复主子提交中列隐藏后出现列偏移问题 单据打印网页时通过hidden-print隐藏元素 格销毁清除记住选择数据 增加动态列示例 代码生成选择主子关联元素必填 tree根据Id和Name选中指定节点增加空判断 其他细节优化
欢迎访问我的博客关注本代码生成器的最新动态: http://blog.csdn.net/lk_blog 代码生成器使用帮助:http://pan.baidu.com/s/1bnxOHGF 代码生成工具使用前置条件:系统安装JDK并配置JAVA_HOME环境变量。 功能: 一、数据库生成实体类. 1.配置 (1)本工具提供了3中连接数据库的方式,分别是:MySql、Oracle、SqlServer,在界面上给出连接示例,方便进行复制和修改(减少因错误配置连接方式而带来了不能链接数据库问题)。配置正确后即可正确读取出数据库中的相关中字段。 (2)生成的代码路径可根据需要进行灵活配置,如果没有配置默认为:d:\.LKGenerator\dest-beans (3)提供了根据数据生成代码的相关配置,可以配置去掉前缀(如t_),去掉后缀,去掉名内容下划线(业界习惯命名中用下划线区分单词),大写名下划线后的第一个字母,去掉属性中下划线并大写其后第一个字母,这样可以使生成的代码更符合业界代码命名习惯,如,用户和角色的关联关系常被命名为:t_user_role,中字段有user_id和role_id,按上面的配置后生成的代码为UserRole.java,类中的属性为userId和roleId. 2.选择 前置条件:本功能要求第一步配置数据库连接方式能正确连接到数据库。 本功能可列出所配置数据库的所有,请选择所需生成代码的后点击确认按钮(注:如果重新配置步骤1的数据库连接后需刷新列)。 3.生成实体类代码 前置条件:步骤2中选择了需要生成代码的。 本功能可根据步骤2中选择进行实体Beans代码的生成生成的代码默认包含AutoBean和AutoField的注解配置(AutoBean和AutoField注解非生成代码的必须项,如果配置了可以在生成代码时时为模版注入该配置,增强模版的扩展性)。 4.编译实体类 前置条件:系统安装JDK并配置JAVA_HOME环境变量 本功能可以对Java代码进行编译(注:本功能的使用不必要依赖步骤3中的代码,可对任何正确的java代码进行编译,如果代码中有引用第三方的jar,请将jar放置到d:\.LKGenerator\.lib文件夹下。) 5.导出数据到Excel 前置条件:执行第三步后已生成带注解的JavaBean. 本功能只要使用地三步的配置注解的JavaBean就能将数据中的数据导出。 6.从Excel导入到DB 前置条件:执行第三步后已生成带注解的JavaBean. 本功能只要使用地三步的配置注解的JavaBean就能将Excel中的数据导入到数据中。 7.生成数据文档 前置条件:步骤2中选择了需要生成文档的。 本功能可以根据步骤2中选择的进行excel文档的生成。 8.清空Beans代码目录。 本功能可以清空生成代码的文件夹,主要为了增强用户体验,让使用者方便打开Beans文件夹并对代码进行修改。 9.打开Beans代码目录 本功能可以打开生成代码的文件夹,主要为了增强用户体验,让使用者方便打开Beans文件夹并对代码进行修改。 二、实体类根据模版生成最终代码. 功能简介:根据实体类代码结合模版生成最终代码,代码模版规范参考模版框架velocity的规范和样例。 实现思路:加载实体类的class文件到classLoader中,读取实体类的属性和注解,将类名、属性字段名、注解三者与模版进行结合生成最终的代码。 1.配置 (1)配置模版路径,这个配置可以配置用于生成代码的velocity模版路径,生成的代码将模版中的特定符号见“模版中可使用的变量”中的描述。 (2)配置生成代码的固定文件路径,这个配置中的文件将原样拷贝到最终生成的代码中,主要适用于非文本文件如*.jpg *.jar等文件。 (3)配置引用jar路径,这个jar路径的配置是需要加载的class需要引用的jar. (4)注入模版的Bean(*.class)路径,这个路径下需放置实体Bean的class文件。 (5)配置生成代码的根路径,这个路径即最终生成代码的路径。 (6)配置注入模板的键值,这个功能可以配置除默认注入到模版的变量之外的特殊变量,例:author=李坤,模板可用变量${author},base-package=com.tgb.lk,则模版中可使用${base-package} (7)读取数据库中的数据用于生成代码。 本配置主要控制是否开启读取配置数据库中数据后作为模板的输入功能。开启本功能将自动将数据库中的数据转换成JavaBean并将此JavaBean作为模板变量的输入用于生成代码。 模板中可使用的通用变量: ${base-package}包名的默认变量,可在步骤(5)中进行属性值的设置,可以放到路径中,路径中使用时将把配置的点(.)转为路径分隔符(/)使用. ${beans}实体类的类名集合. ${bean}实体类类名首字母变为小写. ${bean.Lname}同${bean},实体类类名首字母变为小写. ${bean.Uname}实体类类名首字母变为大写. ${bean.ALname}实体类类名全部变为小写字母. ${bean.AUname}实体类类名全部变为大写字母. 注:${bean},${bean.Lname},${bean.Uname},${bean.ALname},${bean.AUname},${base-package}可以用于模版中也可以用于路径和文件的命名. 注解增强Bean属性,需配置@AutoBean(alias="xxx",table="xxx",args={"xxx","yyy"}): ${bean.alias}实体类注解中的alias值,如果实体类上没有配置,则默认为类名.可配置中文注释,生成代码时显示该注释. ${bean.table}实体类注解中的table值,对应数据库中的名. ${bean.argsLength},${bean.argsSize}bean注解中的args参数数组配置的参数个数. ${bean.args[0]}bean注解中的args参数数组配置中的第一个值. ${bean.fields}实体类的字段集合,可对其进行循环. ${field}实体类属性名. ${field}实体属性首字母变为小写. ${field.Lname}同${bean},实体类属性首字母变为小写. ${field.Uname}实体类属性首字母变为大写. ${field.ALname}实体类属性全部变为小写字母. ${field.AUname}实体类属性全部变为大写字母. 注解增强Field属性,需配置 @AutoField(alias = "序号", isKey = true , isRequired = true , type="String", combo = {"男","女"},args={"xxx","yyy"}) ${field.alias}实体属性注解中的alias值,默认为属性名.可配置中文注释,生成代码时显示该注释. ${field.isKey}实体属性注解中的isKey值,boolean类型,配置后可以使用${bean.key}变量. ${field.isRequired}实体属性中的isRequired属性,该属性可以配置该字段是否为必填项. ${field.type}实体类属注解中的类型,例如String,Integer... ${field.comboLength},${field.comboSize}实体属性注解中combo参数数组配置的参数个数. ${field.combo[0]}实体属性注解中combo参数数组配置中的第一个值. ${field.argsLength}}实体属性注解中的args参数数组配置的参数个数. ${field.args[0]}实体属性注解中args参数数组配置中的第一个值. ${bean.datasLength} = ${bean.datasSize}bean中读取数据中的内容并转为类的对象,模板中可以使用. #foreach($data in ${bean.datas}) ${data.uuid},${data.name}... #end 2.从实体类生成代码 前置条件:步骤1中的(1)中配置了可用的velocity模版,步骤1中(4)中有可用的*.class文件。 本功能用于生成代码。 3.打开生成代码目录 本功能可以打开生成代码的文件夹,主要为了增强用户体验,让使用者方便打开Beans文件夹并对代码进行修改。
C是一种常用的编程语言,它由美国贝尔实验室的Dennis Ritchie在20世纪70年代开发出来。C语言是一种结构化的、高级的、通用性强的编程语言,广泛应用于系统软件开发、驱动程序编写和嵌入式系统开发等领域。 C语言具有简洁、高效、可移植的特性。它的语法简单明了,采用自顶向下的编程思想,具有良好的可读性和易于维护性。C语言的代码编译生成机器码的速度很快,执行效率高,能够充分利用计算机的硬件资源。 C语言的语法规范包括基本数据类型、运算符、控制结构、函数等。它支持面向过程的编程范式,允许开发者根据具体需求定义自己的函数和数据类型,同时也支持面向对象的编程思想,可以使用结构体和指针来模拟类和对象。 C语言有丰富的标准库和第三方库,包括输入输出、字符串处理、内存管理、文件操作等功能,开发者可以利用这些库来快速地实现复杂的功能。同时,C语言还支持与汇编语言的混合编程,可以直接调用汇编语言的函数,提高程序的性能。 C语言的应用广泛,几乎所有的操作系统都使用C语言编写,包括Windows、Unix、Linux等。许多著名的软件,如操作系统、数据库、编译器等,都是使用C语言开发的。同时,C语言也是学习其他高级编程语言的基础,如C++、Java、Python等,这些语言都有一定程度上的C语言的语法和特性。 总而言之,C语言是一门重要的编程语言,具有简洁高效、可移植性强的特点,广泛应用于系统软件开发和嵌入式系统开发等领域,是学习其他高级语言的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值