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

下面是关于“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日

相关文章

  • SpringBoot3集成SLF4J+logback进行日志记录的实现

    下面就为大家讲解一下“SpringBoot3集成SLF4J+logback进行日志记录的实现”的完整攻略。 1. 引入相关依赖 在SpringBoot的pom.xml文件中添加SLF4J和logback的依赖: <dependency> <groupId>org.springframework.boot</groupId>…

    Java 2023年5月26日
    00
  • JavaWeb动态导出Excel可弹出下载

    引言: 在JavaWeb开发过程中,有时候需要将数据库中的数据导出为Excel文件,然后让用户可以进行下载。而且,下载的过程中需要提供一些提示信息,如下载进度、下载成功等信息。本文将详细介绍如何使用JavaWeb动态导出Excel并实现弹出下载的效果。 步骤: 1.创建Excel文件 我们可以使用Apache POI来创建Excel文件,这里就不过多介绍了,…

    Java 2023年6月15日
    00
  • JDK的命令详解

    JDK是Java Development Kit的缩写,是Java应用程序开发所必须的软件开发工具包。它包含了Java Runtime Environment(JRE)和一些开发工具,例如编译器、调试器、JavaDoc工具等等。本篇文章将带您深入了解JDK所提供的命令。 安装JDK 在使用JDK的命令前,需要先安装JDK。以下是在Windows系统下安装JD…

    Java 2023年5月23日
    00
  • Java JDBC基本使用方法详解

    Java JDBC基本使用方法详解 什么是JDBC JDBC(Java Database Connectivity)是Java中访问关系型数据库的标准API,它提供了一种机制用于通过Java程序与各种关系型数据库进行交互,包括插入数据、修改数据、查询数据、删除数据等操作。 JDBC的基本使用步骤 JDBC的基本使用步骤如下: 加载JDBC驱动程序 建立与数据…

    Java 2023年5月19日
    00
  • Springboot导出文件,前端下载文件方式

    下面是Spring Boot导出文件、前端下载文件的攻略。 问题 有时候我们需要从Spring Boot应用中导出一些文件,如Excel、PDF或者其他格式的文件。我们如何通过前端将这些文件下载到本地? 导出文件 在Spring Boot中,我们可以借助一些开源组件实现文件的导出,常见的包括Apache POI、iText等。这里以Apache POI导出E…

    Java 2023年5月20日
    00
  • MyBatis批量插入的五种方式小结(MyBatis以集合方式批量新增)

    MyBatis批量插入的五种方式小结 在使用MyBatis进行批量插入时,有多种方式可以选择。本文将介绍MyBatis批量插入的五种方式,并提供示例代码,以便读者更好地理解这些方法。 方式一:使用for循环单条插入 在使用for循环单条插入时,需要在for循环中执行insert语句。这种方式的优点是插入的数据可以轻松地进行转换,缺点是插入效率较低。 priv…

    Java 2023年6月1日
    00
  • Java使用反射创建对象示例

    使用Java反射创建对象可以在运行时动态创建对象实例,这对于提高代码的灵活性和可扩展性非常有用。下面是Java使用反射创建对象的完整攻略: 步骤一:加载Class对象 Java反射机制需要首先获取要创建对象实例的类的Class对象。可以通过Class.forName()方法或xxx.class语法获取Class对象,其中xxx是类名。例如: Class&lt…

    Java 2023年5月28日
    00
  • Java中有哪些类型的异常?

    Java中异常的类型可以分为两类:检查性异常(Checked Exception)和非检查性异常(Unchecked Exception)。 检查性异常(Checked Exception) 检查性异常是指在编译阶段进行检查的异常,如果程序中出现了这些异常,编译器会提示你必须处理该异常。这些异常通常属于外部环境引起的异常,比如I/O异常、SQL异常等。 Ja…

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