mybatis-plus 返回部分字段的解决方式

mybatis-plus的代码生成器会在实体类中生成数据库所有字段,我们去用mapper接口查询时,会返回数据库所有的字段。

但有些字段不是我们想要的,比如:deleted,所以我们可以在不需要的字段上面加@JsonIgnore注解,返回给前端的时候会自动把这个字段去除。

补充知识:Mybatis-Plus只查询特定字段与创建子类方法

Mybatis-Plus查询特定字段例子:

Seal seal = sealService.selectOne(

new EntityWrapper<Seal>().setSqlSelect("sealName").eq("sealId",auditProcess.getSealId()));

其中这里的seal是一个自定义类。"sealName"是数据库表seal的一个字段,这句查询只查到id为 auditProcess.getSealId() 的seal的名称。其余字段为null

创建子类方法。

一般需要联表的情况,又不想写sql语句,可以试下这种方法(至于效率,我也没有测试过)

上个例子

Manager类

/**
 * <p>
 * 
 * </p>
 *
 * @author>
/**
 * <p>
 * 
 * </p>
 *
 * @author wihenne123
 * @since 2020-04-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("_seal")
public class Seal extends Model<Seal> {
 
  private static final long serialVersionUID = 1L;
 
  /**
   * 印章id
   */
  @TableId(value="http://www.cppcns.com/ruanjian/java/seal_id",type = IdType.UUID)
  private String sealId;
  /**
   * 印章名
   */
  @TableField("seal_name")
  private String sealName;
  /**
   * 图片路径
   */
  @TableField("picture_path")
  private String picturePath;
  /**
   * 创建时间
   */
  @TableField("create_time")
  private Date createTime;
  /**
   * 更新时间
   */
  @TableField("update_time")
  private Date updateTime;
  /**
   * (-1:0:1 - 删除:停用:启用)
   */
  @TableField("seal_status")
  private Integer sealStatus; 
 
  @Override
  protected Serializable pkVal() {
    return this.sealId;
  } 
}

AuditProcess类,其中managerId和sealId需要对应上面两个表。

/**
 * <p>
 * 
 * </p>
 *
 * @author wihenne123
 * @since 2020-04-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("_audit_process")
public class AuditProcess extends Model<AuditProcess> {
 
  private static final long serialVersionUID = 1L;
 
  /**
   * 流程图id
   */
  @TableId(value = "http://www.cppcns.com/ruanjian/java/audit_id", type = IdType.AUTO)
  private Integer auditId;
  /**
   * 流程名称
   */
  @TableField("audit_name")
  private String auditName;
  /**
   * 审核顺序(,隔开-店长用shopManager表示)
   */
  @TableField("audit_sort")
  private String auditSort;
  /**
   * 状态(-1:0:1-删除:停用:启用)
   */
  @TableField("audit_status")
  private Integer auditStatus;
  /**
   * 创建时间
   */
  @TableField("create_time")
  private Date createTime;
  /**
   * 更新时间
   */
  @TableField("update_time")
  private Date updateTime;
  /**
   * 印章id(无则为0)
   */
  @TableField("seal_id")
  private String sealId;
  /**
   * 创建人id
   */
  @TableField("manager_id")
  private String managerId;
  /**
   * 印章x位置
   */
  @TableField("seal_x")
  private Double sealX;
  /**
   * 印章y位置
   */
  @TableField("seal_y")
  private Double sealY;
  /**
   * 印章大小
   */
  @TableField("seal_size")
  private Double sealSize;
  /**
   * 印章所在页码
   */
  @TableField("seal_page")
  private Integer sealPage;
  /**
   * 序号x位置
   */
  @TableField("num_x")
  private Double numX;
  /**
   * 序号y位置
   */
  @TableField("num_y")
  private Double numY;
  /**
   * 序号大小
   */
  @TableField("num_size")
  private Double numSize;
  /**
   * 序号所在页码
   */
  @TableField("num_page")
  private Integer numPage;
  /**
   * pdf文件demo路径
   */
  @TableField("pdf_demo_path")
  private String pdfDemoPath;
  /**
   * 反馈文件路径
   */
  @TableField("result_file_path")
  private String resultFilePath;
  /**
   * 最大打印次数
   */
  @TableField("print_size")
  private Integer printSize;
 
 
  @Override
  protected Serializable pkVal() {
    return this.auditId;
  }
 
}

这时候我只需要对应id的类的名称,所以我设置了vo类作为子类

mybatis-plus 返回部分字段的解决方式

mybatis-plus 返回部分字段的解决方式

然后在接口里面写转换方法

mybatis-plus 返回部分字段的解决方式

mybatis-plus 返回部分字段的解决方式

扫一扫手机访问