zoukankan      html  css  js  c++  java
  • Mybatis-Plus03 代码自动生成器

    先看完Mybatis-Plus01和Mybatis-Plus02再看Mybatis-Plus03

    AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 dao、pojo、service、controller 等各个模块的代码,极大的提升了开发效率。

    注意

    MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:

    • 添加 代码生成器 依赖(与mybatis-plus 版本相同),如果没有添加你会发现没有AutoGenerator这个类
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.4.0</version>
    </dependency>
    
    • 添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。

    如果模板引擎不添加依赖会出错如下报错

    Caused by: java.lang.ClassNotFoundException: org.apache.velocity.context.Context
    

    Velocity(默认):

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

    编码

    package com.jmu;
    
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    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;
    
    public class AutoCode {
        public static void main(String[] args) {
            //需要构建一个代码自动生成器的对象
            AutoGenerator autoGenerator = new AutoGenerator();
            //配置策略
    
            //1.全局配置
            //注意不要导错包
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath+"/src/main/java");
            gc.setAuthor("DJ同学");
            gc.setOpen(false);//生成完文件,是否打开资源管理器
            gc.setFileOverride(true);//是否覆盖原来生成的文件
            gc.setServiceName("%sService");
            gc.setIdType(IdType.ASSIGN_ID);
            gc.setDateType(DateType.ONLY_DATE);
            autoGenerator.setGlobalConfig(gc);
            //2.设置数据源
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&useSSL=false&characterEncoding=utf8");
            dsc.setDriverName("com.mysql.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("123456");
            autoGenerator.setDataSource(dsc);
            //3.包的配置
            PackageConfig pc = new PackageConfig();
            pc.setModuleName("demo");
            pc.setParent("com.jmu");
            pc.setEntity("pojo");
            pc.setMapper("mapper");
            pc.setService("service");
            pc.setController("controller");
            autoGenerator.setPackageInfo(pc);
    
            //4.策略
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setInclude("user");//设置要映射的表
            strategy.setNaming(NamingStrategy.underline_to_camel);//包命名 驼峰命名
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);//
            strategy.setEntityLombokModel(true);
            strategy.setLogicDeleteFieldName("deleted");//逻辑删除
            //自动填充
            TableFill createTime = new TableFill("create_time", FieldFill.INSERT_UPDATE);
            TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);
            ArrayList<TableFill> tableFills = new ArrayList<>();
            tableFills.add(createTime);
            tableFills.add(updateTime);
            strategy.setTableFillList(tableFills);
            //乐观锁
            strategy.setVersionFieldName("version");
            autoGenerator.setStrategy(strategy);
    
            autoGenerator.execute();//执行
        }
    }
    

    下面这个比较全,但是这个基于的版本是mybatis-plus3.0.5,****表示需要修改的地方

    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.annotation.IdType;
    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.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import org.junit.Test;
    
    
    public class CodeGenerator {
    
        @Test
        public void run() {
            // 1、创建代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 2、全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            //建议直接换成绝对路径  不然有时候会出错
            //****
            gc.setOutputDir("D:\Project\new\guli_parent\service\service-edu" + "/src/main/java");
            //****
            gc.setAuthor("DJ同学");
            gc.setOpen(false); //生成后是否打开资源管理器
            gc.setFileOverride(false); //重新生成时文件是否覆盖
            gc.setServiceName("%sService");	//去掉Service接口的首字母I
            //如果数据库中的主键是str ID_WORKER_STR int ID_WORKER
            //****
            gc.setIdType(IdType.ID_WORKER_STR); //主键策略
            gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
            gc.setSwagger2(true);//开启Swagger2模式
    
            mpg.setGlobalConfig(gc);
    
            // 3、数据源配置
            //****
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("123456");
            dsc.setDbType(DbType.MYSQL);
            mpg.setDataSource(dsc);
    
            // 4、包配置
            PackageConfig pc = new PackageConfig();
            //com.edu.eduservice
            //****
            pc.setParent("com.edu");
            //****
            pc.setModuleName("eduservice"); //模块名
    
            //com.edu.eduservice.controller
            pc.setController("controller");
            pc.setEntity("entity");
            pc.setService("service");
            pc.setMapper("mapper");
            mpg.setPackageInfo(pc);
    
            // 5、策略配置
            StrategyConfig strategy = new StrategyConfig();
            //**** 表名
            strategy.setInclude("edu_teacher");
            strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
            strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
    
            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();
        }
    }
    

    执行结果

    image-20201006142433905

  • 相关阅读:
    XmlNode中Value和InnerText的区别
    C# 后台POST和GET 获取数据
    XDocument简单入门
    一个基于jQuery的简单树形菜单
    使用C#的HttpWebRequest模拟登陆网站
    JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
    height、clientHeight、scrollHeight、offsetHeight区别
    使用httpwebrequest Post数据到网站
    sql语句中left join、inner join中的on与where的区别
    SQL Join的一些总结
  • 原文地址:https://www.cnblogs.com/10134dz/p/13773361.html
Copyright © 2011-2022 走看看