MyBatis-Plus 是一个非常强大的 ORM 框架,基于 MyBatis 进行扩展,提供了许多便捷的功能,例如代码生成器,可以极大地提高开发效率。在本篇文章中,我们将讨论如何使用 MyBatis-Plus 自动生成代码,并处理 DTO(数据传输对象)和 VO(视图对象)等模型。

1. 环境准备

在开始之前,确保你的项目已经引入了 MyBatis-Plus 的依赖。以 Maven 项目为例,添加以下依赖到 pom.xml 文件中:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>

2. 配置 MyBatis-Plus

application.ymlapplication.properties 文件中,配置数据库连接信息和 MyBatis-Plus 相关设置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: your_password
  mybatis-plus:
    global-config:
      db-config:
       # 主键策略
        id-type: auto

3. 自动生成代码

MyBatis-Plus 提供了代码生成器,可以根据数据库表自动生成 Entity、Mapper、Service、Controller 等代码。以下是一个示例代码生成器的实现:

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import java.util.Collections;

public class CodeGenerator {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/db_name", "root", "your_password")
                .globalConfig(builder -> {
                    builder.author("your_name") // 设置作者
                           .outputDir("D://code") // 生成文件的输出目录
                           .enableSwagger() // 开启 swagger 方式
                           .fileOverride(); // 文件覆盖
                })
                .packageConfig(builder -> {
                    builder.parent("com.example") // 设置父包名
                           .moduleName("demo") // 设置模块名
                           .entity("model") // 设置实体包名
                           .mapper("mapper") // 设置 Mapper 包名
                           .service("service") // 设置 Service 包名
                           .controller("controller") // 设置 Controller 包名
                           .other("vo") // 设置 VO 包名
                           .outputDir("D://code") // 输出目录
                           .serviceImpl("service.impl") // 设置 ServiceImpl 包名
                           .dto("dto"); // 设置 DTO 包名
                })
                .strategyConfig(builder -> {
                    builder.addInclude("user") // 设置需要生成的表名
                           .addTablePrefix("t_"); // 设置需要过滤的表前缀
                })
                .execute();
    }
}

4. DTO 和 VO 的实现

在生成的代码中,我们的实体类通常直接映射数据库表结构,但在许多情况下,我们需要 DTO 和 VO。

DTO(数据传输对象)

DTO 用于传输数据,通常用于服务间或网络间的数据交换。以下是一个简单示例:

package com.example.demo.dto;

import lombok.Data;

@Data
public class UserDTO {
    private Long id;
    private String username;
    private String email;
}

VO(视图对象)

VO 通常用于向前端展示的数据,可能会与 DTO 略有不同。以下是一个简单示例:

package com.example.demo.vo;

import lombok.Data;

@Data
public class UserVO {
    private Long id;
    private String username;
    private String email;
    private String status; // 可能增加一些状态信息
}

5. 在 Service 层中使用 DTO 和 VO

服务层可以接收 DTO,并返回 VO。以下是一个简单的 Service 示例:

package com.example.demo.service;

import com.example.demo.dto.UserDTO;
import com.example.demo.vo.UserVO;

public interface UserService {
    UserVO getUserById(Long id);

    void createUser(UserDTO userDTO);
}

6. 总结

通过 MyBatis-Plus,我们可以高效地生成代码,并灵活地管理 DTO 和 VO。使用这样的方式,可以大大提高开发效率,减少重复代码。在实际开发中,建议根据需求合理设计 DTO 和 VO,确保应用程序高效、易维护。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部