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

通用枚举

通用枚举

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

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

07通用枚举和表的代码生成器_第1张图片

第一步: 设置枚举类型,使用@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.baomidougroupId>
    <artifactId>mybatis-plus-generatorartifactId>
    <version>3.5.1version>
dependency>

<dependency>
    <groupId>org.freemarkergroupId>
    <artifactId>freemarkerartifactId>
    <version>2.3.31version>
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;
/**
 * 

* 用户信息 *

* * @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 + "}"; } }

你可能感兴趣的:(MyBatisPlus,mybatisplus,java)