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环境搭建及第一个程序运行(小白教程)

    下面是关于“SpringBoot环境搭建及第一个程序运行(小白教程)”的详细攻略。 1. 背景介绍 SpringBoot 是一个基于Spring框架的快速开发WEB应用程序的框架。具有使用简单、快速、灵活 配置等特点。该教程旨在让小白快速掌握 SpringBoot 的环境搭建及第一个程序的运行,便于快速实现业务开发。 2. 环境搭建 在进行SpringBoo…

    Java 2023年5月15日
    00
  • SpringBoot从繁至简的框架基础教程

    Spring Boot从繁至简的框架基础教程 Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、便捷的方式来创建基于Spring的应用程序,同时也提供了一些默认的和约定,使得开发人员可以更加专注于业务逻辑的实现。本文将详细讲解Spring Boot的框架基础,包括概述、特点、构建介绍和示例。 1. 概述 Spring…

    Java 2023年5月15日
    00
  • 详解Spring与Mybatis整合方法(基于IDEA中的Maven整合)

    下面是详解Spring与Mybatis整合方法(基于IDEA中的Maven整合)的完整攻略,该过程中包含了2个示例: 1. 环境准备 在进行整合之前,需要先准备好以下环境:- JDK- Maven- IDEA- Spring- Mybatis 在这里由于要使用Maven来管理依赖,所以需要找到一个可以正常运行的Maven仓库,可以使用阿里云镜像或者是Mave…

    Java 2023年5月19日
    00
  • java搜索无向图中两点之间所有路径的算法

    Java搜索无向图中两点之间所有路径的算法 算法思路 该算法使用深度优先搜索来查找两个节点之间的所有路径。在搜索期间,对于每个遍历到的未访问节点,我们可以标记它为已访问,并沿着它的所有未访问邻居递归搜索。在这个过程中,我们将到达一个目标节点作为目标终点,或遍历了所有的节点,这代表着没有路径可以到达目标终点,此时我们就回溯到上一步去探索其它可能的路径,直到找到…

    Java 2023年5月26日
    00
  • Spring之详解bean的实例化

    Spring 之详解bean的实例化 在 Spring 中,Bean 就是应用程序中的对象,是应用程序的基本构成单元。Bean 由 Spring 容器管理,Spring 容器实例化、配置和组装这些 Bean。本文将详细讲解 Spring 中 Bean 的实例化。 Bean 的实例化方式 在 Spring 中,Bean 的实例化方式一般有三种: 构造器实例化 …

    Java 2023年5月26日
    00
  • Java实现AES加密算法的简单示例分享

    那么我将详细讲解“Java实现AES加密算法的简单示例分享”的完整攻略,包括实现步骤,示例说明等。 第一步:引入依赖 Java实现AES加密算法需要引入如下两个依赖: <dependency> <groupId>javax.crypto</groupId> <artifactId>javax.crypto-ap…

    Java 2023年5月26日
    00
  • HttpServletRequest对象常用功能_动力节点Java学院整理

    HttpServletRequest对象常用功能 概述 HttpServletRequest是Java Servlet API提供的接口,它代表客户端的请求,提供了丰富的方法获取客户端的相关信息。下面我们就来了解HttpServletRequest的常用功能。 获取请求参数 HttpServletRequest提供了两种获得请求参数的方法:getParame…

    Java 2023年6月1日
    00
  • Spring很常用的@Conditional注解的使用场景和源码解析

    Spring中@Conditional注解的使用场景和源码解析 1. 使用场景 通俗的说,@Conditional是一个条件注解,允许我们根据特定条件来控制是否创建一个Bean。因此, @Conditional这个注解的核心就是用来控制 Bean 的创建的。 在实际开发中,我们经常会碰到类似这样的场景:我们需要根据不同的条件来决定是否创建某一个 Bean。比…

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