Mybatis plus的实体类和表字段不对应解决

一、代码

实际项目中,使用mybatis plus,我们经常会创建一个实体类用来和表对应,示列如下:
 

package com.arcade.earth.po;


import com.arcade.po.BaseInfo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import lombok.*;

import java.math.BigDecimal;

@EqualsAndHashCode(callSuper = true)
@TableName("tbl_site_contractor")
@ApiModel(value="SiteContractorInfo对象")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SiteContractorInfo extends BaseInfo {
    private static final long serialVersionUID = 1L;

    private String siteId;

    private String contractorId;

    private String rateType;

    private BigDecimal price;

    private String status;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getSiteId() {
        return siteId;
    }

    public void setSiteId(String siteId) {
        this.siteId = siteId;
    }

    public String getContractorId() {
        return contractorId;
    }

    public void setContractorId(String contractorId) {
        this.contractorId = contractorId;
    }

    public String getRateType() {
        return rateType;
    }

    public void setRateType(String rateType) {
        this.rateType = rateType;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "SiteContractorInfo{" +
                "siteId='" + siteId + '\'' +
                ", contractorId='" + contractorId + '\'' +
                ", rateType='" + rateType + '\'' +
                ", price=" + price +
                '}';
    }
}

该实体中的属性一一对应表 tbl_site_contractor的字段,但是有时候其他查询需要用到此实体,可能额外需要添加其他属性,并不和表字段对应,比如添加projectName属性,可能会报错,具体解决办法如下

@TableField(exist = false)
private String projectName;

 在属性上添加注解@TableField(exist = false),这样反射时就不会要求此字段必须和表字段对应了

可以在实体中添加其他字段,但是笔者还是建议表单独建一个实体类,其他传参需要,自行定义VO实体 

二、@TableField注解拓展学习

1.忽略该属性的映射:

当实体类中的某些属性并不直接对应数据库表的任何字段,而是作为业务逻辑处理过程中的辅助变量时,可以使用此注解告知MyBatis Plus无需为这些属性执行SQL映射操作。

2.虚拟字段处理:

对于一些通过SQL计算或视图返回的字段,它们没有实际的数据库字段对应,也可以用此注解来定义,这样在查询结果映射到实体类时,MyBatis Plus不会尝试去数据库查找这个字段。

3.减少错误提示:

如果实体类中有属性但数据库表中没有对应的列,而又不想每次操作都引发不必要的警告或错误,可以使用此注解避免检查该属性的数据库映射。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值