相关推荐recommended
CodeGenerator——SpringBoot整合MyBatisPlus代码生成器
作者:mmseoamin日期:2024-03-20
  • 作者简介:一名后端开发人员,每天分享后端开发以及人工智能相关技术,行业前沿信息,面试宝典。
  • 座右铭:未来是不可确定的,慢慢来是最快的。
  • 个人主页:极客李华-CSDN博客
  • 合作方式:私聊+
  • 这个专栏内容:BAT等大厂常见后端java开发面试题详细讲解,更新数目100道常见大厂java后端开发面试题。
  • 我的CSDN社区:https://bbs.csdn.net/forums/99eb3042821a4432868bb5bfc4d513a8
  • 微信公众号,抖音,b站等平台统一叫做:极客李华,加入微信公众号领取各种编程资料,加入抖音,b站学习面试技巧,职业规划

CodeGenerator——SpringBoot整合MyBatisPlus代码生成器

简介

CodeGenerator 是Mybatis-Plus(Mybatis的一个增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生)的一个工具,对于基础controller,entity,mapper,service这些层进行自动生成。

工程创建,代码讲解

创建项目

  • 首先创建一个springboot项目

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第1张

    添加相关的依赖,这几个依赖基本都是所有springboot项目必须的,当然还要一个Mybatis-plus的依赖需要自己的手动导入。

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第2张

    mybatis-plus的依赖

    
      
          com.baomidou
          mybatis-plus-generator
          3.2.0
      
    

    application.yml

    一定要配置这个信息,不然无法正常启动项目。

    # DataSource Config
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/vueblog?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    mybatis-plus:
      mapper-locations: classpath*:/mapper/**Mapper.xml
    

    pom.xml

    这里是完整的pom.xml文件

    
    
        4.0.0
        
            org.springframework.boot
            spring-boot-starter-parent
            2.7.8
             
        
        com.example
        CodeGeneratorDemo
        0.0.1-SNAPSHOT
        CodeGeneratorDemo
        CodeGeneratorDemo
        
            1.8
        
        
            
                org.springframework.boot
                spring-boot-starter-web
            
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                2.3.0
            
            
                com.mysql
                mysql-connector-j
                runtime
            
            
                org.projectlombok
                lombok
                true
            
            
                org.springframework.boot
                spring-boot-starter-test
                test
            
            
            
                com.baomidou
                mybatis-plus-generator
                3.2.0
            
            
                org.springframework.boot
                spring-boot-starter-freemarker
            
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                    
                        
                            
                                org.projectlombok
                                lombok
                            
                        
                    
                
            
        
    
    

    创建CodeGenerator

    package com.example.codegeneratordemo;
    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.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;
    // 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
    public class CodeGenerator {
        /**
         * 

    * 读取控制台内容 *

    */ 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.isNotEmpty(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); // gc.setOutputDir("D:\\test"); gc.setAuthor("极客李华"); gc.setOpen(false); // gc.setSwagger2(true); 实体属性 Swagger2 注解 gc.setServiceName("%sService"); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/vueblog?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("123456"); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); pc.setModuleName(null); pc.setParent("com.example.codegeneratordemo"); mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; // 如果模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 如果模板引擎是 velocity // String templatePath = "/templates/mapper.xml.vm"; // 自定义输出配置 List focList = new ArrayList<>(); // 自定义配置会被优先输出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(TableInfo tableInfo) { // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! return projectPath + "/src/main/resources/mapper/" + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 配置模板 TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); strategy.setControllerMappingHyphenStyle(true); strategy.setTablePrefix("m_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } }

    然后根据自己的数据库的情况,对这个配置信息的数据库的URL与对应的密码,进行修改。

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第3张

    这里也可以设置作者信息。

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第4张

    还需要注意的是,这里的这个包的信息也需要进行修改,不然后面的生成情况是有问题的。

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第5张

    配置MybatisPlusConfig信息

    这里的这个MapperScan扫包需要自定义根据自己的情况自定义的进行设置

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第6张

    完整代码

    package com.example.codegeneratordemo.config;
    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    @Configuration
    @EnableTransactionManagement
    @MapperScan("com.example.codegeneratordemo.mapper")
    public class MybatisPlusConfig {
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            return paginationInterceptor;
        }
    }
    

    运行测试

    通过运行这个CodeGenerator类,然后根据输入对应的表的信息,然后就可以自动进行生成代码了。

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第7张

    打开我们的数据,查看我们需要进行的代码生成的表

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第8张

    进行运行生成代码.

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第9张

    在这里就可以看见,这个运行的结果了,我们发现controller,entity,mapper,service这些层都已经被生成好了。

    CodeGenerator——SpringBoot整合MyBatisPlus代码生成器,在这里插入图片描述,第10张

    如果大家觉得有用的话,可以关注我下面的微信公众号,极客李华,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历等内容,让大家更好学习编程,我的抖音,B站也叫极客李华。