代码自动生成:AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

1.我们需要导入mybatis-plus-generator依赖。

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version><scope>compile</scope></dependency><!-- 模板引擎 代码生成 --><!--<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency>-->

模板默认使用的是velocity,除了velocity外,还有Freemarker,Beet两个模板,如果有需要可以自己引入对应的模板引擎。

在目前mybatis-plus-generator版本不能太高,在3.5.0(包括3.5.0)之后会无法使用,所以使用3.5.0之前的版本就行。

2. 新建一个类,编写自动main自动生成代码。代码里的参数可以根据自己的需求修改。

package com.stu;import com.baomidou.mybatisplus.core.toolkit.StringPool;
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.TableInfo;
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;/*** <p>* mysql 代码生成器* </p>*/
public class Generator {/*** RUN THIS*/public static void main(String[] args) {//获取控制台的数据Scanner scanner = new Scanner(System.in);// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();System.out.println("请输入文件输出目录的模块或者项目的地址:");String projectPath = scanner.nextLine();gc.setOutputDir(projectPath + "/src/main/java");      //生成文件的输出目录gc.setAuthor("jjh");                                  //作者gc.setFileOverride(true);                              //是否覆蓋已有文件 默认值:falsegc.setOpen(false);                                    //是否打开输出目录 默认值:truegc.setBaseColumnList(true);                             //开启 baseColumnList 默认falsegc.setBaseResultMap(true);                            //开启 BaseResultMap 默认false
//      gc.setEntityName("%sEntity");         //实体命名方式  默认值:null 例如:%sEntity 生成 UserEntitygc.setMapperName("%sMapper");                           //mapper 命名方式 默认值:null 例如:%sDao 生成 UserDaogc.setXmlName("%sMapper");                                //Mapper xml 命名方式   默认值:null 例如:%sDao 生成 UserDao.xmlgc.setServiceName("%sService");                         //service 命名方式   默认值:null 例如:%sBusiness 生成 UserBusinessgc.setServiceImplName("%sServiceImpl");                  //service impl 命名方式  默认值:null 例如:%sBusinessImpl 生成 UserBusinessImplgc.setControllerName("%sController");    //controller 命名方式    默认值:null 例如:%sAction 生成 UserActionmpg.setGlobalConfig(gc);
// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&useSSL=false&characterEncoding=utf8");
// dsc.setSchemaName("public");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("199000222");mpg.setDataSource(dsc);
// 包配置PackageConfig pc = new PackageConfig();
//      pc.setModuleName(scanner("模块名"));
//      pc.setParent("com.stu");System.out.println("请输入模块名:");String name = scanner.nextLine();//自定义包配置pc.setParent(name);pc.setModuleName(null);pc.setMapper("mapper");pc.setEntity("domain");pc.setService("service");pc.setServiceImpl("service.impl");pc.setController("controller");mpg.setPackageInfo(pc);
// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {
// to do nothing}};List<FileOutConfig> focList = new ArrayList<>();focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {@Overridepublic String outputFile(TableInfo tableInfo) {
// 自定义输入文件名称return projectPath + "/src/main/resources/mapper/" + /*pc.getModuleName() + "/" +*/tableInfo.getEntityName() + "Mapper" +StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);mpg.setTemplate(new TemplateConfig().setXml(null));// 策略配置    数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);  //表名生成策略strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
//      strategy.setCapitalMode(true);              // 全局大写命名 ORACLE 注意
//      strategy.setTablePrefix("prefix");            //表前缀
//      strategy.setSuperEntityClass("com.stu.domain");   //自定义继承的Entity类全称,带包名
//      strategy.setSuperEntityColumns(new String[] { "test_id", "age" });  //自定义实体,公共字段strategy.setEntityLombokModel(true);     //【实体】是否为lombok模型(默认 falsestrategy.setRestControllerStyle(true);     //生成 @RestController 控制器
//      strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");   //自定义继承的Controller类全称,带包名
//      strategy.setInclude(scanner("表名"));       //需要包含的表名,允许正则表达式(与exclude二选一配置)System.out.println("请输入映射的表名:");String tables = scanner.nextLine();String[] num = tables.split(",");strategy.setInclude(num);                       // 需要生成的表可以多张表
//      strategy.setExclude(new String[]{"test"});      // 排除生成的表
//如果数据库有前缀,生成文件时是否要前缀acl_
//      strategy.setTablePrefix("bus_");
//      strategy.setTablePrefix("sys_");strategy.setControllerMappingHyphenStyle(true);       //驼峰转连字符strategy.setTablePrefix(pc.getModuleName() + "_");   //是否生成实体时,生成字段注解mpg.setStrategy(strategy);mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}
}

3.springboot中我们还需要在启动类中添加@MapperScan("com.stu.mapper")注解扫描我们的包名,否则会报错。

package com.stu;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.stu.mapper")
public class SpringbootStuApplication {public static void main(String[] args) {SpringApplication.run(SpringbootStuApplication.class, args);}}

在生成好的mapper接口中加入@Mapper注解,不然后面无法注入使用。

package com.stu.mapper;import com.stu.domain.Purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;/*** <p>*  Mapper 接口* </p>** @author jjh* @since 2022-04-25*/
@Mapper
public interface PurchaseMapper extends BaseMapper<Purchase> {}

4.然后就可以运行了,我们输入相应的地址,模块的名字,想要映射的表名就可以了,结果如图就生成好了。

mybatisPlus代码自动生成相关推荐

  1. 简化开发: mybatis-plus 代码自动生成 以及 常见问题

    目录 1. MP自动代码生成和解析 1.1  getProperty()方法中的key到底是什么 1.2 源码中 System 中 左边是key   调用上面方法能获取到后面内 1.3 测试用例: u ...

  2. 快速搭建springboot+mybatis-plus代码自动生成器的后端框架

    利用springboot + mybatis-plus 代码自动生成器快速搭建后端框架 项目环境 IDEA 2020 springboot 2.3.7.RELEASE mybatis-plus 3.5 ...

  3. 自定义Android注解Part2:代码自动生成

    上一期我们已经把butterknife-annotations中的注解变量都已经定义好了,分别为BindView.OnClick与Keep. 如果你是第一次进入本系列文章,强烈推荐跳到文章末尾查看上篇 ...

  4. 近期活动盘点:高级机器学习训练营、基于神经网络的代码自动生成” “开放学术图谱”、西山金融科技产业创新论坛...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 清华唐杰教授授课 高级机器学习训练营 我们都知道随着数据复杂度的不断提高,经典机器学习算法已经很难满足实际需求,当前,针对复杂数据对象.复 ...

  5. Mybatis最入门---代码自动生成(generatorConfig.xml配置)

    [一步是咫尺,一步即天涯] 经过前文的叙述,各位看官是不是已经被Mybatis的强大功能给折服了呢?本文我们将介绍一个能够极大提升我们开发效率的插件:即代码自动生成.这里的代码自动生成包括,与数据库一 ...

  6. html自动生成工具_关于STM32代码自动生成的工具的进度....

    前情提要:STM32代码自动生成工具_本想...但是...可是...所以 首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香:有的很激动,期待我快点出东西:还有的很淡定,知道我在挖 ...

  7. Spring Boot (七)MyBatis代码自动生成和辅助插件

    一.简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper.dao.entity 的框架 ...

  8. java代码自动生成的插件_如何使用插件生成自定义Java 8代码

    java代码自动生成的插件 大多数程序员讨厌的一件事就是编写样板代码. 无休止的时间花费在设置实体类和配置数据库连接上. 为了避免这种情况,您可以让Speedment Open Source之类的程序 ...

  9. mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap...

    由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/14535 ...

  10. 自动产生fsm代码的工具_代码自动生成工具

    构建支持多种数据库类型的代码自动生成工具 背景: 一般的业务代码中写来写去,无外乎是先建好model,然后针对这个model做些CRUD的操作.(主要针对单表的业务操作)针对于数据库dao.mappe ...

最新文章

  1. Django 视图URLconf3.1
  2. Unity 创建2D平台游戏开发学习教程
  3. [源码和文档分享]基于java 的仿QQ聊天工具
  4. HALCON标定助手使用实例
  5. 归并排序详解(python实现)
  6. 神经网络训练集最少可以是多少个?
  7. Apache ZooKeeper - 事件监听机制详解
  8. netty系列之:轻轻松松搭个支持中文的服务器
  9. 八、一篇文章快速搞懂MySQL 常见的数据类型(整型、小数、字符型、日期型详解)
  10. CentOS 6.9/7通过yum安装指定版本的Redis
  11. 大数据_Hbase-(知识点回顾)---Hbase工作笔记0010
  12. ETL PostgreSQL in Oracle ODI 12c
  13. Xcode无法启动模拟器或者真机
  14. 娃哈哈的新品,为什么打动不了年轻人?
  15. python自动填表单_用pythonwebdriver实现自动填表
  16. 网络控制系统分析与设计——时延问题的网络控制系统建模
  17. Android Studio的安装与配置
  18. Axure R8学习记录
  19. Fabled Rooks
  20. 人、狼、羊、白菜过河问题(广度搜索)

热门文章

  1. 概括计算机程序启动过程,计算机启动过程详解
  2. 《解读量化投资:西蒙斯用公式打败市的故事》内容简介及PDF下载
  3. 免费正版杀毒软件,正版杀毒软件
  4. Java入门电子书百度网盘下载,附面试答案
  5. 想给视频去色并加马赛克就用它
  6. python 科大讯飞 语音转文字 输出干活
  7. cocostudio学习
  8. 《程序设计导引及在线实践》学习
  9. 阿里百万架构师打造的 Java并发编程实战笔记,理论到实践一键吃透
  10. java练习题库_大一java题库练习题.doc