通用枚举
通用枚举
如果表中的有些字段值是固定的例如性别(男或女),此时我们可以使用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 +
"}";
}
}