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

通用枚举

通用枚举

如果表中的有些字段值是固定的例如性别(男或女),此时我们可以使用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 +
        "}";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值