mybatis-plus在实体中加入其他不属于数据库表的字段注释和数据类型的转换

一、mybatis-plus在实体中加入其他不属于数据库表的字段注释和数据类型的转换
数据库:MySQL 、表:t_society_problems、字段:PROBLEM_TYPE (题干类型)、 类型:int
业务描述:在导入Excel文档时候,数据库表中题干类型字段为int型,数据库表中存储的格式为:1(单选)、2(多选)、3(判断),但是接收到的数据为String类型。
问题分析:需要将接收到的String类型转为int类型再将数据存储到数据库中?因为数据库中只有PROBLEM_TYPE (题干类型)字段,当我们接收到前端传过来的数据也不可能用int类型的PROBLEM_TYPE 去接收String类型的题库类型数据。所有我决定在实体中重新定义一个非数据库表t_society_problems的String类型字段,然后通过这个字段类接收从前端传过来的数据。对这个字段可以通过@TableField注解中的exist 属性是注释该字段是否属于该表的字段,默认值为true。
Excel的数据字段:

在这里插入图片描述

具体步骤:

1、在实体中定义字段:@TableField注解中的exist 属性是注释该字段是否属于该表的字段,默认值为true

 /**
     * 1单选 2多选 3判断
     */
	@Excel(name = "答题类型 int", width = 15)
    @ApiModelProperty(value = "答题类型 int")
    @Column(name="PROBLEM_TYPE")
    private  Integer problemType;

    @Excel(name = "答题类型", width = 15)
    @ApiModelProperty(value = "答题类型")
    @TableField(exist = false)
    private  String problemTypeS;

2、导入文档的工具类对数据字段PROBLEM_TYPE 的处理:

对应的枚举类:

public enum OptionEnum implements BaseEnum {
    PROBLEM_TYPE_ONE(1,"单选"),
    PROBLEM_TYPE_MANY(2,"多选"),
    PROBLEM_TYPE_JUDGE(3,"判断");
    
    private final int code;
    private final String info;
    OptionEnum(int code, String info){
        this.code = code;
        this.info = info;
    }

    @Override
    public int getCode() {
        return this.code;
    }
    @Override
    public String getInfo() {
        return this.info;
    }

    @Override
    public String getCodeToString() {
        return String.valueOf(code);
    }
}

枚举转换接口:

public interface BaseEnum {
    /***
     * @Title: getCode
     * @Param: []
     * @description: 获取编码
     * @author: TianLong
     * @date: 2023/2/15 14:56
     * @return: short
     * @throws:
     */
    int getCode();
    /***
     * @Title: getInfo
     * @Param: []
     * @description: 获取文本
     * @author: TianLong
     * @date: 2023/2/15 14:56
     * @return: java.lang.String
     * @throws:
     */
    String getInfo();

    /***
     * @Title: getCodeToString
     * @Param: []
     * @description: 获取字符串格式的编码
     * @author: TianLong
     * @date: 2023/2/15 14:56
     * @return: java.lang.String
     * @throws:
     */
    String getCodeToString();
}
 //对题干类型进行枚举转换
                    if (StringUtils.isNotBlank(listTSocietyProblems.get(i).getProblemTypeS()) && listTSocietyProblems.get(i).getProblemTypeS().equals("单选")){
                        tSocietyProblems = listTSocietyProblems.get(i).setProblemType(OptionEnum.PROBLEM_TYPE_ONE.getCode());
                    }
                    if (StringUtils.isNotBlank(listTSocietyProblems.get(i).getProblemTypeS()) && listTSocietyProblems.get(i).getProblemTypeS().equals("多选")){
                        tSocietyProblems = listTSocietyProblems.get(i).setProblemType(OptionEnum.PROBLEM_TYPE_MANY.getCode());
                    }
                    if (StringUtils.isNotBlank(listTSocietyProblems.get(i).getProblemTypeS()) && listTSocietyProblems.get(i).getProblemTypeS().equals("判断")){
                        tSocietyProblems = listTSocietyProblems.get(i).setProblemType(OptionEnum.PROBLEM_TYPE_JUDGE.getCode());
                    }

运行结果:
在这里插入图片描述

respect

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值