SpringBoot项目使用mybatis-plus代码生成的实例详解

下面是关于“SpringBoot项目使用mybatis-plus代码生成的实例详解”的完整攻略:

1. 什么是mybatis-plus代码生成

mybatis-plus代码生成是基于mybatis-plus框架实现的一种自动生成代码的工具。通过提供表名、实体类名等信息,可以自动创建对应的Java类、Mapper接口及其SQL语句等,并且支持控制台输出或直接生成文件在项目中进行使用。使用mybatis-plus代码生成,可以加快开发效率、降低人为错误率、减少代码量等优点。

2. 如何使用mybatis-plus代码生成

下面将详细介绍如何使用mybatis-plus代码生成。

2.1 引入依赖

在pom.xml文件中引入mybatis-plus-generator依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>latest-version</version>
</dependency>

2.2 配置Generator

在代码中配置Generator,通过Generator可以指定自动生成代码的相关参数,包括数据库驱动、数据库连接信息、代码生成目录、包名、表名以及实体类别名以及Mapper文件的输出格式等。

public static void main(String[] args) {
    // 1.全局配置
    GlobalConfig globalConfig = new GlobalConfig();
    globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
    globalConfig.setAuthor("your name");
    globalConfig.setOpen(false);

    // 2.数据源配置
    DataSourceConfig dataSourceConfig = new DataSourceConfig();
    dataSourceConfig.setDbType(DbType.MYSQL);
    dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mybatis-test?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai");
    dataSourceConfig.setUsername("root");
    dataSourceConfig.setPassword("password");
    dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");

    // 3.包名策略配置
    PackageConfig packageConfig = new PackageConfig();
    packageConfig.setParent("com.example.demo");
    packageConfig.setEntity("entity");
    packageConfig.setMapper("mapper");
    packageConfig.setXml("mapper.xml");
    packageConfig.setService("service");
    packageConfig.setController("controller");

    // 4.策略配置
    StrategyConfig strategyConfig = new StrategyConfig();
    strategyConfig.setCapitalMode(true);
    strategyConfig.setNaming(NamingStrategy.underline_to_camel);
    strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
    strategyConfig.setEntityLombokModel(true);
    strategyConfig.setInclude("user");
    strategyConfig.setControllerMappingHyphenStyle(true);
    strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");

    // 5.整合配置
    AutoGenerator autoGenerator = new AutoGenerator();
    autoGenerator.setDataSource(dataSourceConfig);
    autoGenerator.setGlobalConfig(globalConfig);
    autoGenerator.setPackageInfo(packageConfig);
    autoGenerator.setStrategy(strategyConfig);
    autoGenerator.execute();
}

2.3 运行Generator

上述代码中的AutoGenerator是主类,运行主类即可生成对应的Java类、Mapper接口及其SQL语句等。执行完成后,项目中会自动生成代码,我们可以通过生成的Mapper接口调用生成的SQL语句对数据库进行各种操作。同时,mybatis-plus也支持指定输出目录以及文件名,用户可以灵活地自定义自动生成的代码的存放路径和文件名。

3. 示例

下面给出两个示例,分别演示如何使用mybatis-plus代码生成创建基本CRUD操作和关联查询操作的代码。

3.1 基本CRUD操作

3.1.1 创建数据库表

首先,我们先创建一个user表,用于演示基本CRUD操作:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  `age` int(11) NOT NULL DEFAULT '0',
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

3.1.2 配置Generator

在上文的代码中,修改策略配置:

// 4.策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setCapitalMode(true);
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setInclude("user");
strategyConfig.setControllerMappingHyphenStyle(true);
strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");

3.1.3 生成代码

运行主类,将会在项目的com.example.demo下自动生成entity、mapper及service下对应的Java类及其SQL语句等。

3.1.4 使用生成代码

通过生成的Mapper接口和Service类,以及生成的SQL语句,我们可以方便地对user表进行增删改查操作。

3.2 关联查询操作

3.2.1 创建数据库表

创建两个表:user和address,address表用于保存用户地址信息。

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  `age` int(11) NOT NULL DEFAULT '0',
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

CREATE TABLE `address` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `address` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_address_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

3.2.2 配置Generator

// 4.策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setCapitalMode(true);
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setInclude("user", "address"); // 指定要自动生成的表名,这里同时指定user和address表
strategyConfig.setControllerMappingHyphenStyle(true);
strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");
// 指定外键关系,address表中的user_id引用user表的id
strategyConfig.setTableFillList(Arrays.asList(
    new TableFill("gmt_create", FieldFill.INSERT),
    new TableFill("gmt_modified", FieldFill.INSERT_UPDATE)));
strategyConfig.setDbColumnUnderline(true);
strategyConfig.setRestControllerStyle(true);

// 5.整合配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setDataSource(dataSourceConfig);
autoGenerator.setGlobalConfig(globalConfig);
autoGenerator.setPackageInfo(packageConfig);
autoGenerator.setTemplate(templateConfig);
autoGenerator.setCfg(injectionConfig);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();

3.2.3 生成代码

编写好Generator配置后,执行main方法将会在项目的com.example.demo下自动生成entity、mapper及service下对应的Java类及其SQL语句、sqlmap.xml文件等。

3.2.4 使用生成代码

使用生成的代码,即可实现关联表查询等操作。

以上就是关于“SpringBoot项目使用mybatis-plus代码生成的实例详解”的攻略和示例,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot项目使用mybatis-plus代码生成的实例详解 - Python技术站

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

相关文章

  • Springboot和Jpa实现学生CRUD操作代码实例

    下面我会详细讲解“Springboot和Jpa实现学生CRUD操作代码实例”的完整攻略。 一、前置知识 在进行本篇攻略之前,需要掌握以下的技术和知识: Spring Boot的基本使用方法; JPA的基本使用方法; MySQL数据库的基本使用方法。 如果你还不熟悉这些知识,可以先查看相关的官方文档或者参考相关的教程。 二、创建Spring Boot项目 首先…

    Java 2023年5月20日
    00
  • MySql 8.0及对应驱动包匹配的注意点说明

    MySql 8.0及对应驱动包匹配的注意点说明 在使用MySql 8.0时,我们需要使用与之对应的驱动包来进行连接,否则可能会出现连接失败等问题。在使用时,需要注意以下几点: 1. MySql 8.0版本的特性 MySql 8.0版本引入了许多重要的新特性和升级,例如缓存管道的异步复制、加密、在线DDL、InnoDB元数据锁定等等。 同时也存有一些变更和移除…

    Java 2023年5月20日
    00
  • Spring Security如何为用户示例添加角色详解

    为用户添加角色是 Spring Security 中常见的安全认证需求之一,下面是 Spring Security 如何为用户添加角色的完整攻略。 1. 添加角色 在 Spring Security 中,我们可以通过给用户添加角色来实现安全认证。为了演示,我们通过以下两个示例来说明: 1.1 示例1:自定义用户角色 我们首先需要定义一个用户角色,并将其作为权…

    Java 2023年5月20日
    00
  • 必须要学会的JMM与volatile

    下面我为你详细讲解必须要学会的JMM与volatile的完整攻略。 JMM介绍 JMM(Java Memory Model)即Java内存模型,用于规范Java程序中线程对共享变量的操作。JMM为Java程序中的线程提供可见性、有序性、原子性等保证,从而提高程序并发性能。 JMM提供的保证 可见性: 一个线程修改了共享变量的值,这个值的变化对其他线程是可见的…

    Java 2023年5月26日
    00
  • 什么是程序计数器?

    程序计数器(Program Counter Register)是一种用于存储当前线程正在执行的指令地址的内存区域。程序计数器是线程私有的,每个线程都有自己程序计数器。在 Java 虚拟机中,程序计数器一种较小的内存区域,其通常为几个字节。 程序计数器的主要作用是记录当前线程正在执行的指令地址,以便在发生线程切换时能够恢复执行。在 Java 虚拟机中,线程切换…

    Java 2023年5月12日
    00
  • Spring Boot的Controller控制层和页面

    Spring Boot是一个快速创建Web应用程序的框架,它提供了许多便捷的功能和工具,其中包括控制层和页面。控制层是Web应用程序的核心,它处理HTTP请求并返回响应。页面是Web应用程序的用户界面,它向用户展示数据和交互式元素。下面是详解Spring Boot的Controller控制层和页面的完整攻略: 创建控制器类 首先,我们需要创建一个控制器类来处…

    Java 2023年5月14日
    00
  • 原生JS实现不断变化的标签

    实现不断变化的标签通常指的是像轮播图、动态效果等需要不断切换的元素。在原生JS实现这类效果时,可以使用定时器setTimeout或setInterval来实现,通过不断修改元素的属性值,从而达到动态变化的效果。 下面是一个基本的实现步骤: 1. HTML结构 首先,在HTML中需要定义需要变化的元素,比如轮播图的图片。这里以轮播图为例,HTML结构可以参考以…

    Java 2023年6月15日
    00
  • 简单操作实现Java jsp servlet文件上传过程解析

    简单操作实现Java jsp servlet文件上传过程解析 在Java Web开发中,文件上传是非常常见的功能,本文将详细讲解如何使用Java jsp servlet实现文件上传功能。文件上传的过程主要包含以下几步: 创建上传表单并设置相应属性 编写Java servlet处理上传请求 获取上传文件的相关信息 保存上传文件到服务端指定目录 下面将对这几步进…

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