MyBatisPlus代码生成器的使用示例

 更新时间:2021年12月30日 08:37:32   作者:万里顾—程  
本文主要介绍了MyBatisPlus代码生成器的使用示例,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,感兴趣的可以了解一下

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

导入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.19</version>
        </dependency>

更详细的代码生成器配置请查看官方文档:https://baomidou.com/pages/061573/#superentityclass

表结构

在这里插入图片描述

当前项目结构

在这里插入图片描述

配置代码生成器

1、globalConfig 全局策略配置

outputDir

  • 生成文件的输出目录
  • 默认值:D 盘根目录

fileOverride

  • 是否覆盖已有文件
  • 默认值:false

open

  • 是否打开输出目录
  • 默认值:true

enableCache

  • 是否在 xml 中添加二级缓存配置
  • 默认值:false

开发人员

  • 默认值:null

kotlin

  • 开启 Kotlin 模式
  • 默认值:false

swagger2

  • 开启 swagger2 模式
  • 默认值:false

activeRecord

  • 开启 ActiveRecord 模式
  • 默认值:false

baseResultMap

  • 开启 BaseResultMap
  • 默认值:false

baseColumnList

  • 开启 baseColumnList
  • 默认值:false

dateType

  • 时间类型对应策略
  • 默认值:TIME_PACK

entityName

  • 实体命名方式
  • 默认值:null 例如:%sEntity 生成 UserEntity

mapperName

  • mapper 命名方式
  • 默认值:null 例如:%sDao 生成 UserDao

xmlName

  • Mapper xml 命名方式
  • 默认值:null 例如:%sDao 生成 UserDao.xml

serviceName

  • service 命名方式
  • 默认值:null 例如:%sBusiness 生成 UserBusiness

serviceImplName

  • service impl 命名方式
  • 默认值:null 例如:%sBusinessImpl 生成 UserBusinessImpl

controllerName

  • controller 命名方式
  • 默认值:null 例如:%sAction 生成 UserAction

idType

  • 指定生成的主键的 ID 类型
  • 默认值:null

2、dataSourceConfig 数据源配置

dbQuery

  • 数据库信息查询类
  • 默认由 dbType 类型决定选择对应数据库内置实现

​ 实现 IDbQuery 接口自定义数据库查询 SQL 语句 定制化返回自己需要的内容

dbType

  • 数据库类型
  • 该类内置了常用的数据库类型【必须】

schemaName

  • 数据库 schema name
  • 例如 PostgreSQL 可指定为 public

typeConvert

  • 类型转换
  • 默认由 dbType 类型决定选择对应数据库内置实现

​ 实现 ITypeConvert 接口自定义数据库 字段类型 转换为自己需要的 java 类型,内置转换类型无法满足可实现 IColumnType 接口自定义

url

  • 驱动连接的 URL

driverName

  • 驱动名称

username

  • 数据库连接用户名

password

  • 数据库连接密码
package com.haoming;

import com.baomidou.mybatisplus.annotation.DbType;
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 ChengCode {
    public static void main(String[] args) {
        //构建代码生成器对象
        AutoGenerator mpg = new AutoGenerator();
        //1、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");//生成文件的输出目录
        gc.setAuthor("鼠皓明");//作者
        gc.setOpen(false);//是否打开输出目录
        gc.setFileOverride(false);//是否覆盖已有的文件
        gc.setServiceName("%sService");//去除Service的I前缀
        gc.setIdType(IdType.ID_WORKER);//主键生成策略
        //ONLY_DATE 只使用 java.util.date 代替,SQL_PACK 使用 java.sql 包下的,TIME_PACK 使用 java.time 包下的 java8 新的时间类型
        gc.setDateType(DateType.TIME_PACK);//数据库时间类型 到 实体类时间类型 对应策略
        gc.setSwagger2(true);//开启swagger2模式
        mpg.setGlobalConfig(gc);

        //2、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSl=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        dsc.setDbType(DbType.MYSQL);//数据库类型
        mpg.setDataSource(dsc);

        //3、包的配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("blog");//父包模块名
        pc.setParent("com.cheng");//父包名,如果为空,将下面子包名必须写全部, 否则就只需写子包名
        pc.setEntity("pojo");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        //4、策略配置
        StrategyConfig sy = new StrategyConfig();
        sy.setInclude("user");//设置要映射的表,可以设置多张
        sy.setNaming(NamingStrategy.underline_to_camel);//从数据库表到文件的命名策略,下划线转驼峰命名
        sy.setColumnNaming(NamingStrategy.underline_to_camel);//列的命名策略
        sy.setEntityLombokModel(true);//开启lombok支持
        sy.setLogicDeleteFieldName("deleted");//设置逻辑删除字段
        sy.setVersionFieldName("version");//设置乐观锁
        sy.setRestControllerStyle(true);//开启controller的restful命名
        sy.setControllerMappingHyphenStyle(true);//开启controller中请求映射的连字符样式,如:localhost:8080/hello_id_1
        //设置自动填充
        TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
        TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
        ArrayList<TableFill> tableFills = new ArrayList<>();
        tableFills.add(create_time);
        tableFills.add(update_time);
        mpg.setStrategy(sy);

        //执行代码生成器
        mpg.execute();
    }
}

执行代码生成器,查看项目结构的变化

在这里插入图片描述

代码生成器执行成功,自动生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码。

到此这篇关于MyBatisPlus代码生成器的使用示例的文章就介绍到这了,更多相关MyBatisPlus代码生成器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java的Socket实现长连接以及数据的发送和接收方式

    Java的Socket实现长连接以及数据的发送和接收方式

    这篇文章主要介绍了Java的Socket实现长连接以及数据的发送和接收方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Idea中使用Git的流程

    Idea中使用Git的流程

    这篇文章主要介绍了Idea中使用Git的流程,git是目前流行的分布式版本管理系统。本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-09-09
  • Java RabbitMQ的工作队列与消息应答详解

    Java RabbitMQ的工作队列与消息应答详解

    这篇文章主要为大家详细介绍了Python实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 重学SpringBoot3之如何发送Email邮件功能

    重学SpringBoot3之如何发送Email邮件功能

    这篇文章主要给大家介绍了重学SpringBoot3之如何发送Email邮件功能的相关资料,文中包括环境准备、项目配置、代码实现、最佳实践和安全性建议,通过采用异步发送、重试机制、限流等最佳实践,可以构建一个健壮的邮件发送系统,需要的朋友可以参考下
    2024-11-11
  • Java BigDecimal使用方法详解

    Java BigDecimal使用方法详解

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理
    2022-12-12
  • Spring cloud OpenFeign中动态URl、动态传递接口地址代码示例

    Spring cloud OpenFeign中动态URl、动态传递接口地址代码示例

    openFeign是作为微服务之间调用的解决方案,每个微服务项目是必不可少的,下面这篇文章主要给大家介绍了关于Spring cloud OpenFeign中动态URl、动态传递接口地址的相关资料,需要的朋友可以参考下
    2024-02-02
  • Java实现简单邮件发送

    Java实现简单邮件发送

    这篇文章主要介绍了Java实现简单邮件发送的相关资料,实例讲解了java邮件发送实现方法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Ubuntu16.04 64位下JDK1.7的安装教程

    Ubuntu16.04 64位下JDK1.7的安装教程

    这篇文章主要为大家详细介绍了Ubuntu16.04 64位下JDK1.7的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 详解java枚举用法及实例

    详解java枚举用法及实例

    这篇文章主要介绍了Java枚举详解及使用实例,本文直接给出实例代码,需要的朋友可以参考下
    2017-04-04
  • Mybatis Update操作返回值问题

    Mybatis Update操作返回值问题

    在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数,下面通过本文给大家分享Mybatis Update操作返回值问题,需要的朋友参考下吧
    2017-09-09

最新评论