@TableField(exist = false)
是 MyBatis Plus 中的注解,用于标记实体类中的字段是否映射到数据库表中的字段。在这个注解中,exist
属性默认为 true
,表示该字段在数据库表中存在。而当设置为 false
时,表示该字段不会映射到数据库表中的字段。
通常情况下,@TableField
注解用于实体类中的非持久化字段,例如计算字段、临时字段或者与数据库表中的字段无关的字段。这样的字段不会保存到数据库中,但可以在实体类中使用。
例如,假设我们有一个 User
实体类,其中包含一个 fullName
字段,但数据库表中只有 firstName
和 lastName
两个字段。我们可以使用 @TableField(exist = false)
注解来标记 fullName
字段,表示它不会映射到数据库表中。
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd")
这种生成的跟数据库不对应的字段,可以接前端数据,返回数据,用这个数据作为sql的条件.
案例:接收的String转日期。查询日期区间。
package co.yixiang.exam.entity;
import co.yixiang.domain.BaseDomain;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Data
public class ExFeedback extends BaseDomain {
// 反馈ID(自增)
private Integer id;
// 分类推荐(bug,功能建议)
private String feedbackType;
// 昵称
private String feedbackName;
// 反馈内容
private String feedbackContent;
// 联系方式
private String feedbackContactInfo;
// 提交时间
private LocalDateTime feedbackCommit;
// 创建人
private String createBy;
// 修改人
private String updateBy;
@TableField(exist = false)
private List<ExImg> exImg;
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}
Page<ExFeedback> exFeedbackPage = exFeedbackMapper.selectPage(
new Page<>(pageable.getPageNumber(), pageable.getPageSize()),
new LambdaQueryWrapper<ExFeedback>()
// 根据id 查询
.like(!Objects.isNull(exFeedback.getId()), ExFeedback::getId, exFeedback.getId())
// 根据内容分类进行查询
.like(!Objects.isNull(exFeedback.getFeedbackType()), ExFeedback::getFeedbackType, exFeedback.getFeedbackType())
// 查询日期区间
.between(
(!Objects.isNull(exFeedback.getStartDate()) && !Objects.isNull(exFeedback.getEndDate())),
ExFeedback::getCreateTime,
exFeedback.getStartDate(),
exFeedback.getEndDate()
)
);