MyBatis-Plus——代码生成器的使用_mybatisplus生成指定某张表-程序员宅基地

技术标签: MyBatis Plus  

MyBatis-Plus——代码生成器的使用

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 等各个模块的代码。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wpc2018/article/details/122176665

智能推荐

Java 1.8(圆的面积和周长)编写程序,使用以下公式计算并显示半径为5.5的圆的面积和周长。_java程序 已知圆的半径是5.6-程序员宅基地

文章浏览阅读2.1k次,点赞6次,收藏7次。package Try;import java.util.Scanner;//在java.util中导入Scanner包public class Circle { public static void main(String[] args) { System.out.println("请输入圆的半径");//友情提示 Scanner input = new Scanner(System.in);//创建一个名为input的输入环境 ._java程序 已知圆的半径是5.6

华为鸿蒙开发者大会什么时候召开,鸿蒙2.0来了!华为正式公布开发者大会时间:9月10日...-程序员宅基地

文章浏览阅读416次。原标题:鸿蒙2.0来了!华为正式公布开发者大会时间:9月10日8月2日晚上8点,华为通过官方微博正式对外宣布了华为开发者大会HDC2020的召开时间为9月10日至12日。这一消息与此前爆料的华为将于9月11日召开开发者大会的消息基本吻合。 不出意外的话,这场开发者大会的重头戏,将会是备受期待的鸿蒙2.0操作系统。因为按照去年华为开发者大会公布的鸿蒙系统应用时间表,今年华为将会上马鸿蒙2.0操作系统..._7月8鸿蒙鲲鹏大会什么时候召开

批量栅格投影(arcpy)_arcpy 摨西蓮銝箇掖-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏20次。栅格投影的意义:将分辨率单位为度的变为米定义投影的意义:将某个栅格的坐标系变为想要的坐标系批量栅格投影的代码如下:# -*- coding: UTF-8 -*-#需要自行更改的如下:#inws:输入路径#outws:输出路径#Coordinate_System:目标投影坐标系import globimport osimport arcpy# 输入路径 应该注意,中文路径,会导致读不出文件inws = r"------"# 参考文件路径 使用栅格数据集(从其导入方形像元大_arcpy 摨西蓮銝箇掖

《Malware Analysis and Detection Engineering》第一章:恶意软件趋势与反病毒人员架构-程序员宅基地

文章浏览阅读279次。malspam 垃圾邮件_malware analysis and detection engineering

JavaEE--spring(4)_javaee配置异常通知-程序员宅基地

文章浏览阅读111次。AOPAOP:全称是 Aspect Oriented Programming 即:面向切面编程。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。AOP的作用及优势:作用: 在程序运行期间,不修改源码对已有方法进行增强。优势: 减少重复代码 提高开发效AOP的实现方式:使用动态代理技术AOP 相关术语Joinpoint(连接点): 所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的_javaee配置异常通知

ValueError: not enough values to unpack (expected 3, got 2)-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏4次。python报错:ValueError: not enough values to unpack (expected 3, got 2)分析:这个错误的信息是,期望有三个返回值,但其实函数只有两个返回值解决方法,检查函数和接收函数返回值的参数个数是否一致,改成一致即可..._valueerror: not enough values to unpack (expected 3, got 2)

随便推点

[kuangbin带你飞]专题一 简单搜索 K - 迷宫问题-程序员宅基地

文章浏览阅读87次。K - 迷宫问题定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。Input一个5 × 5...

解决SQL Server 2014 Management Studio无法将excel数据导入数据库_标题: sql server 导入和导出向导 ----------------------------程序员宅基地

文章浏览阅读1.2k次。标题: SQL Server 导入和导出向导------------------------------操作无法完成。------------------------------其他信息:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。 (System.Data)针对上面这个问题,可以尝试下载安装AccessDatabaseEngine.e..._标题: sql server 导入和导出向导 ------------------------------ 操作无法完成

无法获得 VMCI 驱动程序的版本: 句柄无效_visual machine communication interface(vmci)驱动程序-程序员宅基地

文章浏览阅读1.6k次。今天打开虚拟机遇到了一些问题,一直在网上查也没用,最后十分粗暴的重装了一遍。安装后打开的时候遇到了这个问题,查了一下解决了。在此记录一下。首先看一下VMCI。虚拟机交流接口VMCI(The Virtual Machine Communication Interface)是一个在一个或多个虚拟机与宿主机之间提供高速高效交流的基本组件(infrastructure)启用一个虚拟机的VMCI..._visual machine communication interface(vmci)驱动程序

(Python实用)用Python做的交互式动态大图_python pyecharts 动态放大-程序员宅基地

文章浏览阅读1.4k次。今天给大家分享1个pyecharts交互式动态可视化案例,通过先拆分、后组合的方式,一步步教你如何实现,具体成果如下。本次案例数据来源于国家统计局,通过爬虫获取,这里已给大家备好,请在文末获取一、绘制基本图形用pandas读取数据,通过整合数据格式,分别用pyecharts绘制地图、柱状图、饼图,具体内容如下:1.绘制地图importpyecharts.optionsasoptsfrompyecharts.globalsimportThemeTypefrompye..._python pyecharts 动态放大

LayUI upload上传组件上传文件的两种方式(手动上传、自动上传)_layui upload auto-程序员宅基地

文章浏览阅读8.3k次,点赞7次,收藏8次。1 手动上传上传文件分为两步,第一步选择文件,第二步上传文件。HTML代码:<input type='button' id='selectFile' value='选择文件'><div id='fileDiv'></div><input type='button' id='uploadFile' value='上传文件'>JS代码:$(function(){ initUpload();});//初始化上传组件funct_layui upload auto

CPU与外设之间的数据传送方式_cpu与外设采用无条件传送方式时,为保证传送数据的有效性,对外设有什么要求-程序员宅基地

文章浏览阅读2w次,点赞18次,收藏57次。在微型计算机系统中,CPU与外设之间的数据传送方式主要有程序传送方式、中断传送方式和直接存储器存取(DMA)传送方式,分别介绍如下。 7.2.1 程序传送方式 程序传送方式是指直接在程序控制下进行数据的输入/输出操作。程序查询方式分为无条件传送方式和查询方式(条件传送方式)两种。 一. 无条件传送方式 微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等_cpu与外设采用无条件传送方式时,为保证传送数据的有效性,对外设有什么要求

推荐文章

热门文章

相关标签