SpringBoot基于Mybatis-Plus自动代码生成

yizhihongxing

下面是关于“Spring Boot基于Mybatis-Plus自动代码生成”的完整攻略:

1. 简介

Mybatis-Plus是Mybatis的一个开源插件,提供了许多功能,例如自动代码生成、通用CRUD操作、分页和逻辑删除等。通过Spring Boot和Mybatis-Plus的结合,我们可以快速构建高效的数据库操作应用程序。

2. 步骤

2.1 配置pom.xml

在pom.xml文件中添加如下依赖:

<!--Spring Boot-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<!--MyBatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>

<!--MyBatis-Plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

或者可以在MyBatis-Plus官网下载代码生成器,添加依赖后,使用IDEA导入项目,执行代码生成。

2.2 配置application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  global-config:
    db-config:
      id-type: auto
      table-prefix: t_
    sql-injector: com.baomidou.mybatisplus.injector.LogicSqlInjector
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:/mapper/**/*.xml

配置DB连接和Mybatis-Plus属性。

2.3 代码生成器

在Mybatis-Plus中,我们可以使用代码生成器生成entity、mapper、service、controller等相关代码,大大提高我们的开发效率。

可以使用命令行生成:

public class CodeGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator generator = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
        gc.setAuthor("jhucbs");
        gc.setOpen(false);
        gc.setSwagger2(true);
        generator.setGlobalConfig(gc);
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/mp?useUnicode=true&useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&useInformationSchema=true");
        // dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        generator.setDataSource(dsc);
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(null);
        pc.setParent("com.baomidou.mybatisplus.samples.generator");
        generator.setPackageInfo(pc);
        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输入文件名称
                return System.getProperty("user.dir")
                        + "/src/main/resources/mapper/" 
                        + tableInfo.getEntityName() 
                        + "Mapper" 
                        + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        generator.setCfg(cfg);
        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        generator.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.setSuperControllerClass("com.baomidou.mybatisplus.samples.generator.common.BaseController");
//        strategy.setSuperEntityClass("com.baomidou.mybatisplus.samples.generator.common.BaseEntity");
        // 写于父类中的公共字段
//        strategy.setSuperEntityColumns("id");
        strategy.setInclude("user");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix("mp_");
        generator.setStrategy(strategy);
        generator.execute();
    }
}

或者使用界面操作,可以在Mybatis-Plus中启动图形化界面,在其中为每张表选择代码生成器的选项并进行代码生成。

3. 示例

我们这里提供两个示例:

3.1 示例1:生成单个表的Entity与Mapper

我们假设我们有一张名为student的数据表,其中包含了以下字段:

id          bigint(20)      主键
name        varchar(20)     学生姓名
age         tinyint(4)      学生年龄
sex         varchar(10)     学生性别
address     varchar(100)    学生地址

我们可以按照如上步骤先配置好项目,然后在配置好了代码生成器后,执行以下代码:

public class CodeGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator generator = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
        gc.setAuthor("jhucbs");
        gc.setOpen(false);
        gc.setSwagger2(true);
        generator.setGlobalConfig(gc);
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        generator.setDataSource(dsc);
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.example.demo");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        generator.setPackageInfo(pc);
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setInclude("student");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix("t_");
        generator.setStrategy(strategy);
        generator.execute();
    }
}

执行此代码后,即可生成与student表对应的entity与mapper文件。

3.2 示例2:生成多张表的实体对象

假设我们有两张名为student和teacher的数据表,且均包含上面所示字段。那我们只需要在代码生成器的策略配置中添加后缀名为"_base"的名称即可同时生成这两个表对应的Entity对象。

public class CodeGenerator {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator generator = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
        gc.setAuthor("jhucbs");
        gc.setOpen(false);
        gc.setSwagger2(true);
        generator.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        generator.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.example.demo");
        pc.setEntity("entity");
        pc.setMapper("mapper");

        // 在此处添加要生成的表名
        pc.setModuleName("student","teacher");

        generator.setPackageInfo(pc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);

        // 在此处添加要生成的表名
        strategy.setInclude("student","teacher");

        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix("t_");
        generator.setStrategy(strategy);

        generator.execute();
    }
}

执行此代码后,即可生成student和teacher表对应的Entity对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot基于Mybatis-Plus自动代码生成 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java Web开发之MD5加密用法分析

    Java Web开发之MD5加密用法分析 什么是MD5加密 MD5全称为“Message-Digest Algorithm 5”,是一种非常常见并且安全性较高的哈希算法。MD5算法的核心在于将任意长度的数据(消息)通过一个不可逆的算法变换成一个固定长度的、十六进制表示的字符串,称为消息摘要。这个摘要具有防篡改性、密钥敏感性和抗碰撞等特性。 MD5加密的应用场…

    Java 2023年5月19日
    00
  • 基于IDEA部署Tomcat服务器的步骤详解

    基于IDEA部署Tomcat服务器的步骤详解 一、安装Tomcat服务器 在官方网站下载Tomcat服务器,选择 .zip 格式的压缩包进行下载。 解压缩下载的压缩包到本地的某个目录下。例如:D:\apache-tomcat-8.5.61 配置环境变量。在系统环境变量中添加 CATALINA_HOME 变量,变量值为 Tomcat 的路径。例如:D:\apa…

    Java 2023年6月16日
    00
  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面是详细的JavaWeb实现用户登录注册功能的攻略。 1. 准备工作 在开始编写代码之前,需要做一些准备工作: 安装JDK和Tomcat 创建一个JavaWeb项目 配置Tomcat服务器 在创建JavaWeb项目时,需要引入JSP和Servlet的依赖包。 2. 搭建用户登录页面 用户登录页面可以使用HTML和JSP标签编写。用户需要输入用户名和密码,然…

    Java 2023年5月24日
    00
  • spring MVC中传递对象参数示例详解

    在 Spring MVC 中,我们可以通过多种方式传递参数,其中包括传递对象参数。本文将详细讲解 Spring MVC 中传递对象参数示例详解,包括如何定义对象、如何传递对象参数、如何接收对象参数等。 定义对象 在 Spring MVC 中,我们可以通过定义一个 POJO(Plain Old Java Object)类来表示一个对象。下面是一个简单的示例,演…

    Java 2023年5月18日
    00
  • 深入了解JAVA数据类型与运算符

    深入了解JAVA数据类型与运算符 JAVA数据类型 JAVA中的数据类型分为两类,基本数据类型和引用数据类型。 基本数据类型 JAVA的基本数据类型包括以下8种: byte:1字节,范围-128~127 short:2字节,范围-32768~32767 int:4字节,范围-2147483648~2147483647 long:8字节,范围-92233720…

    Java 2023年5月26日
    00
  • maven 打包时间戳问题

    Maven 是一个流行的 Java 项目构建工具,它提供了各种功能,包括依赖管理、编译、测试、打包等。在实际项目中,我们经常需要对代码进行打包以便于部署和发布。其中,在打包过程中加入时间戳可以帮助我们更好地记录版本信息,方便项目的管理和追踪。然而,在 Maven 打包时间戳问题中也存在一些坑点,需要注意。 配置 pom.xml 文件 我们可以在项目的 pom…

    Java 2023年6月1日
    00
  • Java实现获取前、后N天日期的函数分享

    标题 Java实现获取前、后N天日期的函数分享 介绍 在 Java 中,我们可以通过编写函数,来获取前或后 N 天的日期。本攻略将介绍如何实现该功能。 步骤 1.通过 Java 中的 Calendar 类获取当前日期。 Calendar calendar = Calendar.getInstance(); Date now = calendar.getTim…

    Java 2023年5月20日
    00
  • Spring mvc实现Restful返回json格式数据实例详解

    下面是关于“Spring MVC实现Restful返回JSON格式数据实例详解”的完整攻略,包含两个示例说明。 Spring MVC实现Restful返回JSON格式数据 在本文中,我们将介绍如何使用Spring MVC实现Restful返回JSON格式数据。 步骤1:添加依赖 首先,我们需要在pom.xml中添加Spring MVC和Jackson的依赖。…

    Java 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部