软件编程
位置:首页>> 软件编程>> java编程>> MyBatisPlus代码生成器的使用示例

MyBatisPlus代码生成器的使用示例

作者:万里顾—程  发布时间:2022-04-28 07:52:42 

标签:MyBatisPlus,代码生成器

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

表结构

MyBatisPlus代码生成器的使用示例

当前项目结构

MyBatisPlus代码生成器的使用示例

配置代码生成器

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();
   }
}

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

MyBatisPlus代码生成器的使用示例

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

来源:https://blog.csdn.net/wpc2018/article/details/122176665

0
投稿

猜你喜欢

  • 一、案例一//XML文件写方法        //编写XML文件的格式并存储到指定的FilePath
  • 1、MediaCodec调用流程首先,我们先看下MediaCodec::CreateByType函数里面做了什么:sp<MediaCo
  • 最近一直想写一个类似于待办的东西,由于不想用传统的session,就卡住了,后来在各种群里扯皮,发现除了用缓存之外,还可以通过 JWT 来实
  • 工厂模式在Java应用程序中对象无处不在,这些对象都需要进行创建,如果创建的时候直接new对象,那么如果我们要更换对象,所有new对象的地方
  • 如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言,我们没有办法不接触它。对于J
  • 一、类成员的访问级别public:可由任何代码访问。private(默认):只能由类中的代码访问。internal:只能由它所在的项目(程序
  • 在C#中常用到的运算符有条件运算符,is运算符,as运算符,typeof 运算符等等,接下来在文章中将为大家具体介绍各个运算符的使用方法条件
  • 本篇是对安卓菜单使用编程方式实现,当然可以使用XML的方式完成同样的功能,基本Java和C#写法都是一致的,所以使用XML的方式在本篇中使用
  • 前言在我们日常的开发过程中通过打印详细的日志信息能够帮助我们很好地去发现开发过程中可能出现的Bug,特别是在开发Controller层的接口
  • java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计
  • 本文实例为大家分享了flutter日期时间选择器的具体代码,供大家参考,具体内容如下1 日期选择器 //设置默认显示的日期为当前 DateT
  • 学习Demo contains方法:用于判断list集合是否包含某个元素containsKey方法:用于判断Map键中是否包含某个
  • using Microsoft.Win32 ;   1.读取指定名称的注册表的值 &nbs
  • 装箱(boxing)和拆箱(unboxing)是C#类型系统的核心概念.是不同于C与C++的新概念!,通过装箱和拆箱操作,能够在值类型和引用
  • 本文实例讲述了Java线程同步方法。分享给大家供大家参考,具体如下:1. Semaphore1.1 二进制SemaphoreSemaphor
  • 做了Android开发这么久了,经常会遇到一个问题是adb端口被占用,大家都知道Android默认的adb端口是5037,电脑上有一些应用的
  • 本文实例为大家分享了unity实现UI元素跟随3D物体的具体代码,供大家参考,具体内容如下在Canvas不同的渲染模式(RenderMode
  • 本文实例讲述了C#敏感词过滤实现方法。分享给大家供大家参考。具体如下:这两天突然想到了敏感词过滤 就结合网上找到的资料自己写了一个,脏字数量
  • 昨天有个刚学java的师弟发了个程序给我,说死活编译不过,老是报编码问题,自己试了一下,也出问题了...当我们编辑了一个Java源文件保存时
  • this在Java中,this的作用和其词义很接近。它在方法内部使用,即这个方法所属对象的引用;它在构造器内部使用,表示该构造器正在初始化的
手机版 软件编程 asp之家 www.aspxhome.com