Java后端学习笔记:Enum枚举类型的数据库设置与后端使用

一、前提:关于使用的数据库与数据库管理软件
数据库:Mysql
数据库管理软件:Navicat
二、后端关于对Enum枚举类型值对象的使用

聚合类account:

@Entity
@Table(name = "accounts")
public class Account  {
    //嵌入式的ID
    @EmbeddedId
    private AccountId id;
    private String type;
    private String subdivide;
    private String money;
    private String time;
    @Column(name = "create_id")
    private String createId;
    private String comment;
    @Embedded
    private  CreateTime createTime;
    //当前账单的状态
    //@Embedded
    @Column(name = "status")
    @Enumerated(EnumType.STRING)
    private Status status;

    public Account(){};//此处解决的是下面构造函数参数注入的问题
    //构造函数内封装的必须是需要的参数,必不可少的参数
    public Account(String type, String money, String time, String createId, CreateTime createTime) {
        this.id=new AccountId();
        this.type = type;
        this.money = money;
        this.time = time;
        this.createId = createId;
        this.createTime = createTime;
        this.status=Status.CREATED;
    }

    // 数据转换
    public AccountDTO makeAccountDTO() {
        AccountDTO dto = new AccountDTO();
        dto.setId(id.value());
        dto.setType(this.type);
        dto.setMoney(this.money);
        dto.setTime(this.time);
        dto.setCreateId(this.createId);
        dto.setCreateTime(createTime.value());
        dto.setStatus(status.name());
        return dto;
    }
    public AccountDTO2 makeAccountDTO2(){
        AccountDTO2 dto=new AccountDTO2();
        dto.setId(id.value());
        dto.setType(this.type);
        dto.setMoney(this.money);
        dto.setTime(this.time);
        dto.setCreateId(this.createId);
        dto.setCreateTime(createTime.value());
        dto.setComment(this.comment);
        dto.setSubdivide(this.subdivide);
        dto.setStatus(status.name());
        return dto;
    };
}

在值对象Staus添加注释:

@Enumerated(EnumType.STRING)

值对象Status:

public enum Status  {
    //被创建(不一定发布),被删除,被修改,被关闭(操作),被发布
    CREATED,
    REMOVED,
    UPDATED,
    CLOSED,
    PUBLISHED;
    Status(){};
    public Status changeTo(Status newStatus){
        //如果当前状态为REMOVED则,当前状态不可修改
        if(this==Status.REMOVED){
            if(newStatus!=Status.REMOVED){
                throw new AccountStatusException("当前已处于删除状态状态不支持此操作!");
            }
        }
        if(this!=Status.CREATED){
            if(newStatus==Status.UPDATED){
                throw new AccountStatusException("当前的账单状态未处于CREATED状态,不能修改");
            }
        }
        return newStatus;
    };
}

三、数据库中枚举类型数据的设置
1.直接通过数据库管理工具设置枚举类型
在这里插入图片描述
2.通过sql语句

alter table 表名 modify column 属性名 enum('value1','value2','value3','value3');

链接:详细了解Enum枚举类型

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值