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日

相关文章

  • 减少代码开发工作的Java库lombok及注解的使用学习

    这里是使用Lombok库和注解以减少Java代码开发工作的完整攻略: 1. 什么是Lombok库? Lombok是一个Java库,可以通过注解简化开发人员的代码编写量,减少样板代码的重复,从而提高代码的可读性和可维护性。使用Lombok,开发人员可以通过注解的方式自动生成getter和setter方法、构造器、日志、equals、HashCode和toStr…

    Java 2023年5月23日
    00
  • Springboot实现根据用户ID切换动态数据源

    下面详细讲解一下Spring Boot实现根据用户ID切换动态数据源的完整攻略。 1. 背景介绍 在一些需要多数据源分库分表的项目中,我们需要根据用户ID来动态切换数据源。比如将同一张表中不同用户的数据划分到不同的数据库中进行存储,这样可以有效地降低数据库的负载,提高系统的性能。 2. 实现步骤 2.1 引入相关依赖 我们可以通过引入Spring Boot的…

    Java 2023年6月3日
    00
  • GateWay动态路由与负载均衡详细介绍

    GateWay动态路由与负载均衡详细介绍 什么是 Gateway 动态路由 Gateway (网关) 是微服务架构中的重要组件之一,可以理解为一个整合了多个微服务节点的入口,它处理着客户端请求,根据请求的不同,将请求转发到不同的微服务中。 Gateway 动态路由则是指在网关中,通过配置文件或者 API 等方式,实现动态路由规则的制定和修改。这样,对于不同的…

    Java 2023年5月26日
    00
  • java 利用HttpClient PostMethod提交json数据操作

    下面是详细讲解Java利用HttpClient PostMethod提交JSON数据操作的完整攻略: 1. 导入HttpClient依赖 首先需要在项目中使用HttpClient库,可以使用Maven等方式导入依赖,例如: <dependency> <groupId>org.apache.httpcomponents</grou…

    Java 2023年5月26日
    00
  • JSP验证码动态生成方法

    JSP验证码动态生成方法 验证码是一种基于图像识别的人机交互技术,用于防止机器恶意提交表单、暴力破解等恶意行为。在 JSP 中,我们可以采用动态生成验证码的方式来实现验证码功能。 安装开发环境 你需要在本地搭建 JSP 的开发环境。这里我们以 Eclipse + Tomcat 作为例。 编写生成验证码的 Servlet (1)新建一个 Java 类,并继承 …

    Java 2023年6月15日
    00
  • 使用SpringBoot自定义starter的完整步骤

    使用SpringBoot自定义starter可以方便我们在多个项目中重复使用一些公共的依赖或配置。下面是使用SpringBoot自定义starter的完整步骤: 1. 创建maven项目 <groupId>com.example</groupId> <artifactId>custom-starter</artifa…

    Java 2023年5月15日
    00
  • Java如何提供给第三方使用接口方法详解

    Java提供给第三方使用接口方法是指使用Java编写一个库,供其他开发者在自己的项目中使用,这个库就是接口。接口提供了一种标准化、规范化的编程方法,让编写代码变得更加高效和可维护。 下面是Java提供给第三方使用接口方法的详细攻略: 1.编写接口类: 接口是一种抽象的数据类型,它只有方法声明,没有方法体。接口用于定义某种功能的标准,而不关心这个功能的具体实现…

    Java 2023年5月26日
    00
  • Java练手小项目实现一个项目管理系统

    Java练手小项目实现一个项目管理系统 项目管理系统可以用于管理个人、企业项目,实现项目的立项、任务的分配、进度的跟踪、文档的上传、项目报告的生成等功能。实现该项目可以提升Java编程能力和项目管理能力。 1. 技术栈 SpringBoot:用于快速搭建后端框架; Mybatis:用于处理数据持久化; Thymeleaf:用于实现后端渲染界面; Bootst…

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