07通用枚举和表的代码生成器

news2024/12/29 8:37:59

通用枚举

通用枚举

如果表中的有些字段值是固定的例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来为属性赋值

需求: 在数据库表添加字段sex

在这里插入图片描述

第一步: 设置枚举类型,使用@EnumValue注解将注解所标识的属性值存储到数据库中

// 枚举类型只要设置getter方法
@Getter
public enum SexEnum {
    MALE(1, "男"),
    FEMALE(2, "女");
    // 将注解所标识的属性值存储到数据库中
    @EnumValue
    private Integer sex;
    private String sexName;
    
    SexEnum(Integer sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }
}

第二步: 在实体类中添加枚举类型

@Data
public class User {
    @TableId("uid")
    private Long id;
    @TableFiled("user_name")
    private String name;
    private Integer age;
    private String email;
    // 增加枚举类型对于sex字段
    private SexEnum sex;
    @TableLogic
    private Integer isDeleted;  
}

第三步: 扫描通用枚举的包,告诉MyBatis-Plus通用的枚举类是谁,将来将枚举的属性值赋值给实体类的属性

mybatis-plus:
	configuration:
		# 配置MyBatis日志
		log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
	global-config:
		db-config:
			# 配置MyBatis-Plus操作表的默认前缀
			table-prefix: t_
			# 配置MyBatis-Plus的主键策略
			id-type: auto
	# 配置扫描通用枚举的包
	type-enums-package: com.atguigu.mybatisplus.enums

第四步: 测试使用通用的枚举类为实体类的属性赋值

/*
	INSERT INTO 
		t_user 
	(user_name,age,sex) 
		VALUES (Enum,20,1)
*/
@Test
public void testSexEnum(){
    User user = new User();
    user.setName("Enum");
    user.setAge(20);
    //设置性别信息为枚举项,将@EnumValue注解所标识的属性值存储到数据库,默认会将属性的名称存储到数据库
    user.setSex(SexEnum.MALE);
    userMapper.insert(user);
}

代码生成器

生成步骤

第一步: 导入依赖

<!--代码生成器的核心依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>
<!--模板依赖-->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

第二步: 设置生成文件的相关信息

public class FastAutoGeneratorTest {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false", "root", "123456")
            .globalConfig(builder -> {
                builder.author("atguigu") // 设置作者
                    .enableSwagger() // 开启swagger模式即生成的文件含有swagger注解
                    .fileOverride() // 覆盖已生成文件
                    .outputDir("D://mybatis_plus"); // 指定输出目录
            })
            .packageConfig(builder -> {
                builder.parent("com.atguigu") // 设置父包名
                    .moduleName("mybatisplus") // 设置父包模块名
                    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://mybatis_plus"));// 设置mapperXml生成路径
            })
            // 策略配置
            .strategyConfig(builder -> {
                builder.addInclude("t_user") // 设置需要生成的表名即根据数据库哪张表生成文件
                    .addTablePrefix("t_", "c_"); // 设置过滤表前缀
            })
            .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
            .execute();
    }
}

第三步: 查看指定目录生成的实体类等相关文件

package com.atguigu.mybatisplus.entity;
/**
 * <p>
 * 用户信息
 * </p>
 *
 * @author yunqing
 * @since 2023-09-14
 */
@ApiModel(value = "User对象", description = "用户信息")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;
    
    @ApiModelProperty("主键")
    private Long id;

    @ApiModelProperty("姓名")
    private String name;

    @ApiModelProperty("手机号")
    private String phone;

    @ApiModelProperty("性别")
    private String sex;

    @ApiModelProperty("身份证号")
    private String idNumber;

    @ApiModelProperty("头像")
    private String avatar;

    @ApiModelProperty("状态 0:禁用,1:正常")
    private Integer status;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getIdNumber() {
        return idNumber;
    }

    public void setIdNumber(String idNumber) {
        this.idNumber = idNumber;
    }
    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }
    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "User{" +
            "id=" + id +
            ", name=" + name +
            ", phone=" + phone +
            ", sex=" + sex +
            ", idNumber=" + idNumber +
            ", avatar=" + avatar +
            ", status=" + status +
        "}";
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1015403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023/09/15 qt day1

代码实现图形化界面 #include "denglu.h" #include "ui_denglu.h" #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> denglu::denglu(QWidget *parent): QMainWindow(p…

JavaScript-promise使用+状态

Promise 什么是PromisePromise对象就是异步操作的最终完成和失败的结果&#xff1b; Promise的基本使用&#xff1a; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compati…

层次聚类分析

1、python语言 from scipy.cluster import hierarchy # 导入层次聚类算法 import matplotlib.pylab as plt import numpy as np# 生成示例数据 np.random.seed(0) data np.random.random((20,1))# 使用树状图找到最佳聚类数 Z hierarchy.linkage(data,methodweighted,metric…

时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测

时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测 目录 时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现NGO-BiLSTM北方苍鹰算法优…

面对突如其来的 GC 问题如何下手解决

今天我们主要从一个实战案例入手分析面对突如其来的 GC 问题该如何下手解决。 想要下手解决 GC 问题&#xff0c;我们首先需要掌握下面这三种问题。 如何使用 jstat 命令查看 JVM 的 GC 情况&#xff1f; 面对海量 GC 日志参数&#xff0c;如何快速抓住问题根源&#xff1f; …

保密技术基础--北交大实验靶场2

由于第2、第3章的内部章节较少&#xff0c;所以我将其的体验感受一起写在这篇文章当中。 2.1 保密专用网络知识学习 这一小节也是一节的理论知识学习&#xff0c;学习过后有一个小测试&#xff0c;和第一章一样&#xff0c;学的知识和给的题目可以说是毫无关系。这一节的知识更…

VBA技术资料1-182

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…

04_kibana 安装和配置指南

04_kibana 安装和配置指南 概述安装配置可能报错环境变量配置 概述 这个是干啥的呢&#xff1f; 目前我理解就是数据的展示 我们安装的目的是 请求访问ES&#xff0c; 如果没有安装完全可以使用postman代替 不过这个调试的时候有提示比较好&#xff0c; 所以我就安装了 安装…

【射频电路基础】第二章-谐振功率放大器

本书所用版本为:《射频电路基础》第二版&#xff08;赵建勋 邓军 著&#xff09; 网课详情见b站:《射频电路基础&#xff08;高频电子线路&#xff09;》 本书的笔记以书本和手写笔记结合为主。 文章目录 第二章 谐振功率放大器1. 谐振功率放大器的工作原理2. 谐振功率放大器…

Android kotlin开源项目-功能标题目录

目录 一、BRVAH二、开源项目1、RV列表动效&#xff08;标题目录&#xff09;2、拖拽与侧滑&#xff08;标题目录&#xff09;3、数据库&#xff08;标题目录&#xff09;4、树形图(多级菜单)&#xff08;标题目录&#xff09;5、轮播图与头条&#xff08;标题目录&#xff09;6…

蓝桥杯 题库 简单 每日十题 day2

01 卡片 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝有很多数字卡片&#xff0c;每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数&#xff0c;他想从 1 开始拼出正整数&#xff0c;每拼一个&a…

红黑树(思维导图详解版)

目录 资源已上传 实现代码 测试代码 资源已上传 部分图片 实现代码 注意判断是否为红黑树的代码实现&#xff0c;实现代码中红黑树的删除 #pragma once #include<iostream> using namespace std;enum Color_Type {Red,Black };template<class K,class V> str…

【计算机视觉】Vision Transformers算法介绍合集(一)

文章目录 一、Vision Transformer二、Swin Transformer三、Detection Transformer四、Data-efficient Image Transformer五、self-DIstillation with NO labels六、Deformable DETR七、Compact Convolutional Transformers八、NesT九、Pyramid Vision Transformer十、Dense Pre…

什么是MQ消息队列及四大主流MQ的优缺点(个人网站复习搬运)

什么是&#xff2d;&#xff31;消息队列及四大主流&#xff2d;&#xff31;的优缺点 小程序要上一个限时活动模块&#xff0c;需要有延时队列&#xff0c;从网上了解到用RabbitMQ可以解决&#xff0c;就了解了下 MQ 并以此做记录。 一、为什么要用 MQ 核心就是解耦、异步和…

算法笔记—多数相加

首先&#xff0c;我们要引入一个一道题目1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 两数之和 其实这道题很简单&#xff0c;但是&#xff0c;可以使用内嵌循环来进行遍历&#xff0c;找到符合要求的数据&#xff0c;返回下标即可。 但今天提供另一个方法&#xff…

劳务管理 视频监控 项目版智慧工地管理系统源码

智慧工地管理系统将人工智能技术、传感器技术、虚拟现实技术等更多高新技术嵌入到建筑、机器、人员佩戴的设备、工地出入口大门等各种物体中&#xff0c;广泛互联形成“物联网技术”&#xff0c;再与“互联网技术”融合&#xff0c;完成项目管理利益相关者与项目施工现场的融合…

数据仓库模型设计V2.0

一、数仓建模的意义 数据模型就是数据组织和存储方法&#xff0c;它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后&#xff0c;数据才能得到高性能、低成本、高效率、高质量的使用。 高性能&#xff1a;良好的数据模型能够帮助我们快速查询…

考研算法47天:01背包

问题描述 算法详细步骤 代码随想录 (programmercarl.com) ac代码 #include <iostream> using namespace std; int bag[1001]; int bagMax[1001]; int bagvalue[1001]; int main(){int n,v;cin>>n>>v;for(int i0;i<n;i){cin>>bag[i]>>bagva…

跨站脚本攻击实验-beef

实验目的 学习XSS工具/手工攻击的原理掌握XSS工具/手工攻击的方法学习防御XSS的方法/原理 实验工具 burpsuite Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具&#xff0c;并为这些工具设计了许多接口。所有的工具都共享一个能处理并显示HTTP 消息&#xff…

电路电子技术2电容电感伏安关系 计算电路中某两端电压

1.计算电流 思路&#xff1a;可以知道R1两端的电压&#xff0c;即U1&#xff0c;计算出流过R1的电流。接下来计算R2两端的电压&#xff0c;即US-U1&#xff0c;进而知道流过R2的电流。根据在节点处的KCL&#xff0c;即可求出I。 2.电容电感伏安关系 电容元件与电感元件的伏安…