系列文章目录
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中枚举的用法,这个也在实际的网站开发中是很常用的一块内容。也不用我们自己编写转换逻辑,直接定义好后用就可以。非常的方便。简化了我们的开发过程~