MyBatis-Plus之通用枚举

news2024/11/26 20:23:32

系列文章目录

Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客
MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客

MyBatis-Plus分页查询(快速上手运用)_心态还需努力呀的博客-CSDN博客_mybatis plus分页查询

MyBatis-Plus条件构造器[常用的模糊查询、排序查询、逻辑查询和指定字段查询案例]_心态还需努力呀的博客-CSDN博客_mybatisplus排序查询MyBatis-Plus中的逻辑删除使用_心态还需努力呀的博客-CSDN博客

注:上述所列只是部分文章,本系列还在更新中~感兴趣可看专栏哦~  


文章目录

目录

系列文章目录

文章目录

前言

一、修改表结构

二、定义枚举

三、配置扫描包

四、修改实体 

五、测试 

总结


前言

MyBatis-Plus中提供了通用枚举,简单来说就是将数据库中的某一字段的代替的含义转换成真实的含义将数据读给用户,用户在存储时也会将真实值转换成代替的数字存入到数据库中。举个例子:用户性别在数据库中存储为1(表示男)、2(表示女)。在读取数据时就会自动将12值转换为男或女。

这样做是可以有效地节省数据库的存储空间。下面我们来看看枚举的使用方式~


一、修改表结构

在User表中,我们添加一个性别字段sex。默认值为1,其中存储的值1为男,2为女。将字段添加到deleted字段的后面。代码如下:

USE study;
ALTER TABLE user 
ADD COLUMN sex int(1) NULL DEFAULT 1 COMMENT '1-男,2-女' AFTER deleted;

 我们查看下图,可看到已经将性别字段(sex)添加到user表中。

 

二、定义枚举

新建一个枚举包,在枚举包下写SexEnum类,该类需要继承枚举接口IEnum,需要实现getValue方法,就是返回我们要存入数据库的数字值。

1.定义设置值的含义,1表示数据表中sex字段的男,2表示数据表中sex字段的女。

2.设置存储值。

3.toString方法返回数据库中字段对应的值含义。用来展示给用户。

代码如下:

package cn.imust.mp.enums;

import com.baomidou.mybatisplus.annotation.IEnum;

public enum SexEnum implements IEnum<Integer> {

    MAN(1,"男"),
    WOMAN(2,"女");

    private int value;
    private String desc;

    SexEnum(int value,String desc){
        this.value=value;
        this.desc=desc;
    }

    @Override
    public Integer getValue() {
        return this.value;
    }

    @Override
    public String toString(){
        return this.desc;
    }
}

三、配置扫描包

在application.properties中配置枚举扫描包。

代码如下:

#枚举包扫描
mybatis-plus.type-enums-package=cn.imust.mp.enums

四、修改实体 

在数据库中添加的sex性别字段要在User实体类中编写对应的属性,但类型这里要写成SexEnum(即要设置成枚举类型)。代码如下:

private SexEnum sex;

五、测试 

上述已经配置好了,接下来我们来测试一下。

在测试类中编写一个testInsert的方法,用来测试插入数据和查询数据的结果。

插入一条数据,插入成功后打印数据全部数据。(注:插入sex时注意里面的写法

代码如下:

//测试添加方法
    @Test
    public void testInsert(){
        User user=new User();
        user.setUserName("心态还需努力");
        user.setUserEmail("12433");
//        user.setUserRole("ADMIN");
        user.setUserStatus("0");
        user.setUserPassword("12344");
        user.setDeleted(0);
        user.setSex(SexEnum.WOMAN);

//        表中没有字段
        user.setHobby("足球");
        //受影响的行数  count
        int count = userMapper.insert(user);
        if(count>0){//添加成功
            //输出所有数据
            testSelectList();
        }else {//添加失败
            System.out.println("添加失败~");
        }
    }

效果图:

通过生成的添加sql语句,可看到箭头所指,添加数据时值为2,表示存入数据表中性别为2(女)。和上述的代码想要的一致。

 通过生成的查询全部sql语句,查出来的性别值就会自动转换成‘男‘和‘女‘的汉字。

 枚举在条件查询中也是可以实现的,下面我们通过编写测试方法testselectBySex测试条件查询。

查询所有性别为男的所有用户信息。代码如下:

@Test
    public void testselectBySex(){
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        //查询所有性别为男的用户信息
        wrapper.eq("sex",SexEnum.MAN);
        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

效果图(可看到查询的条件为性别(1),查询出的所有用户信息也可看出都为男):

 


总结

这就是MP中枚举的用法,这个也在实际的网站开发中是很常用的一块内容。也不用我们自己编写转换逻辑,直接定义好后用就可以。非常的方便。简化了我们的开发过程~

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

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

相关文章

CyclicBarrier 多线程处理数据

文章目录前言需求环境准备单线程处理多线程处理总结前言 开发中&#xff0c;我们经常会遇到处理批量数据&#xff0c;最后把处理成功和失败的数据结果记录下来。普通方法一个循环就可以搞定这个需求&#xff0c;但是面临大量数据单个线程去处理可能面临很大的瓶颈&#xff0c;…

怎么进行视频配音?建议收藏这些配音方法

最近我的朋友向我求助&#xff0c;他想要自己制作一个视频&#xff0c;但是视频里面有些片段需要配音&#xff0c;可是他又不想用自己的声音来配音。一方面担心容易NG&#xff0c;需要录制很多遍&#xff0c;会浪费较多的时间&#xff1b;另一方面是&#xff0c;如果视频录制和…

​单张图像三维人脸重建必备入门face3d—3DMM

作者&#xff1a;小灰灰 来源&#xff1a;投稿 编辑&#xff1a;学姐 本次的例子是将pipeline生成的图片作用于3DMM&#xff0c;重新拟合成新的图片。 load model 3DMM的表达式&#xff1a; &#x1d446;̅ ∈ &#x1d445;3&#x1d45b;是平均人脸形状&#xff0c;&#x…

国产网关apisix安装

1、安装docker 参考&#xff1a;centos7安装docker_代码手艺人老羊的博客-CSDN博客 2、下载包&#xff08;从github&#xff09; # Download the Docker image of Apache APISIX git clone https://github.com/apache/apisix-docker.git 3、安装 # Switch the current di…

单点登录设计

01 单系统登录机制 1、http无状态协议 web应用采用browser/server架构&#xff0c;http作为通信协议。http是无状态协议&#xff0c;浏览器的每一次请求&#xff0c;服务器会独立处理&#xff0c;不与之前或之后的请求产生关联&#xff0c;这个过程用下图说明&#xff0c;三…

JavaScript高级 |彻底搞懂原型对象

本文已收录于专栏⭐️ 《JavaScript》⭐️ 学习指南&#xff1a;对象的原型函数的原型new操作符将方法放原型里constructor总结梳理原型对象内存表现完结散花参考文献对象的原型 JavaScript 当中每个对象都有一个特殊的内置属性[[prototype ]] ,这个特殊的对象可以指向另外一个…

科技云报道:畅想无人化运维的AIOps,还有多远的路要走?

科技云报道原创。 在IT行业&#xff0c;运维人常常自我调侃“赚着5k的月薪&#xff0c;操着5千万的心&#xff0c;名下挂着5亿的资产”。 机房的暖通、网络、综合布线&#xff0c;系统的监控告警、故障响应等一大堆繁杂琐碎的工作&#xff0c;充斥着运维人的日常。 与开发和产…

自定义Feign的配置

SpringBoot虽然帮我们实现了自动装配&#xff0c;但是也是支持自定义配置的。 Feign运行自定义配置来覆盖默认配置&#xff0c;可以修改的默认配置如下&#xff1a; 配置Feign日志有两种方式 方式一&#xff1a;配置文件方式 1&#xff09;全局生效 feign:client:config:defa…

【愚公系列】2022年12月 Elasticsearch数据库-ELK添加SQL插件和浏览器插件(二)

文章目录前言一、ELK添加SQL插件和浏览器插件1.配置插件2.浏览器插件3.Elasticsearch术语介绍4.测试SQL插件和浏览器插件前言 下载SQL插件地址&#xff1a;https://github.com/NLPchina/elasticsearch-sql 我们选择7.15.2版本&#xff0c;ES页选择7.15.2版本把最后面的下载链…

车间调度|基于遗传算法的柔性车间调度(Matlab代码实现)

目录 1 概述 2 遗传优化算法 3 车间调度 4 运行结果 5 参考文献 6 Matlab代码实现 1 概述 调度通过合理安排生产资源,以缩短生产时间和提高资源利用率为目的,在生产系统中扮演着重要的角色。作业车间调度问题(Job-shop Schedu-ling Problem&#xff0c;JSP)是一类经典…

1996-2020年全国31省农村电力和农田水利建设相关数据

1996-2020年全国31省农村电力和农田水利建设相关数据 1、1996-2020年 2、范围&#xff1a;31省 3、指标包括&#xff1a; 乡村办水电站、装机容量、发电量、农村用电量、有效灌溉面积、旱涝保收面积、机电排灌面积、实际耕地灌溉面积、新增耕地灌溉面积、节水灌溉面积、新增…

2023年第六届先进控制,自动化与机器人国际会议(ICACAR 2023)

2023年第五届先进控制&#xff0c;自动化与机器人国际会议&#xff08;ICACAR 2023&#xff09; 重要信息 会议网址&#xff1a;www.icacar.org 会议时间&#xff1a;2023年4月14-16日 召开地点&#xff1a;中国北京 截稿时间&#xff1a;2023年2月28日 录用通知&#xf…

排序子序列

1 题目来源&#xff1a; 牛客网&#xff1a;排序子序列 2 题目描述  牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分…

Ashampoo Burning Studio创建可启动磁盘

Ashampoo Burning Studio创建可启动磁盘 Ashampoo的产品通常适合质量&#xff0c;但在其中&#xff0c;它是世界上最好的软件之一&#xff0c;名为Ashampoo Burning Studio。与著名的Nero程序相比&#xff0c;该软件几乎一无是处&#xff0c;所有用于制作、写入和复制光盘的软件…

Python Tutorial——模块

如果你从Python解释器中退出&#xff0c;并且再次进入&#xff0c;你会发现你以前定义的函数和变量都已经丢失了。所以&#xff0c;如果你想写一个在某种程度上更长的程序&#xff0c;使用一个文本编辑器来准备解释器的输入会使情况有所好转&#xff0c;并且使用文件代替输入来…

最简单的方式实现Zotero文件同步+坚果云在多台电脑设备之间

应用场景&#xff1a; 放假回家&#xff0c;只带了笔记本搞科研的好童靴&#xff0c;发现实验室台式机的zotero中的PDF没办法在笔记本上读取。于是探索了一下午如何不重新在网页上保存下载台式机中的PDF&#xff0c;轻松获取异地的文献。 方式一&#xff1a; 氪金付费zotero…

参数估计与假设检验

推断统计&#xff1a;研究如何利用样本数据来推断总体特征 描述统计&#xff1a;描述一组数据的特征 参数估计&#xff1a;利用样本信息估计总体特征 假设检验&#xff1a;利用样本信息判断对总体的假设是否成立 一.参数估计 就是对于总体指标的估计 估计&#xff1a;根据…

免费l2接口有多少种类型?

免费l2接口是一个预先定义的函数&#xff0c;它的目的是让开发人员和开发人员无需访问源代码&#xff0c;也无需访问源代码&#xff0c;也无需理解其内部工作。免费l2接口有多少种类型&#xff1f; 有四种类型的股票l2接口: RPC&#xff1a;通过处理(或任务)共享的数据缓冲区…

SpringBoot整合RabbitMQ实现死信队列

文章目录概念介绍什么是死信死信队列应用工程搭建环境说明搭建步骤实现死信准备Exchange&Queue监听死信队列方式一——消费者拒绝&否认方式二——超过消息TTL方式三——超过队列长度限制代码仓库前面一文通过 Java整合RabbitMQ实现生产消费&#xff08;7种通讯方式&…

Spark的运行模式介绍

Spark的运行模式 本地模式&#xff08;Local&#xff09; 一般用做测试&#xff0c;测试代码的逻辑是否正确 本地模式&#xff0c;只启动一个Driver进程&#xff0c;没有Executor进程的&#xff0c;所有Task都运行在Driver进程中 集群模式 &#xff08;Cluster&#xff09; 一…