@TableField(value = "status") 作用
时间: 2023-05-14 12:05:17 浏览: 103
@TableField(value = "status") 是 MyBatis-Plus 框架中的注解,用于指定实体类中对应数据库表中的字段名为 status。这个注解可以用于实体类的属性上,也可以用于实体类的 getter 方法上。它的作用是将实体类中的属性映射到对应的数据库表中的字段上。
相关问题
@Data @AllArgsConstructor @NoArgsConstructor @Builder @Table(name = "advert") public class Advert { /** * 主键 / @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "广告唯一id") private Integer id; /* * 广告名称 / @ApiModelProperty(value = "广告名称") @NotBlank(message = "广告名称不可为空", groups = {AddGroup.class, UpdateGroup.class}) private String name; /* * 广告位置ID / @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "position_id") private AdPosition position; /* * 广告图片ID / @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "media_id") private MediaFile media; /* * 开始日期 / @Column(name = "start_date") @ApiModelProperty(value = "开始日期") @NotNull(message = "开始日期不可为空", groups = {AddGroup.class}) private Date startDate; /* * 结束日期 / @Column(name = "end_date") @ApiModelProperty(value = "结束日期") @NotNull(message = "结束日期不可为空", groups = {AddGroup.class}) private Date endDate; /* * 广告链接 / @ApiModelProperty(value = "广告链接") @NotBlank(message = "广告链接不可为空", groups = {AddGroup.class}) private String link; /* * 广告状态:0:未启用,1:已启用,2:已结束 / @ApiModelProperty(value = "广告状态") @NotNull(message = "广告状态不可为空", groups = {UpdateGroup.class}) private Integer status; /* * 创建时间 / @Column(name = "create_time") @ApiModelProperty(value = "创建时间") private Date createTime; /* * 更新时间 */ @Column(name = "update_time") @ApiModelProperty(value = "更新时间") private Date updateTime; }如何在使用basemapper的插入时给position和media赋值,正常赋值会报错Cause: java.sql.SQLException: Field 'position_id' doesn't have a default value ; Field 'position_id' doesn't have a default value; nested exception is java.sql.SQLException: Field 'position_id' doesn't have a default value
可以在插入时手动设置position和media的值,例如:
Advert advert = new Advert();
advert.setName("广告名称");
advert.setStartDate(new Date());
advert.setEndDate(new Date());
advert.setLink("广告链接");
advert.setStatus(0);
advert.setPosition(new AdPosition(1)); //手动设置position的值
advert.setMedia(new MediaFile(1)); //手动设置media的值
advertMapper.insert(advert);
其中,1为position和media对应的ID值。这样就可以成功插入数据了。
@Data @TableName("bis_task") public class BisTask { private static final long serialVersionUID = 1L; @TableId(value="id" , type = IdType.AUTO) private Integer id; @TableField("task_name") private String taskName; @TableField("create_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @TableField("task_status") private Integer taskStatus; @TableField("expect_task_start_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date expectTaskStartDate; @TableField("actual_task_start_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date actualTaskStartDate; @TableField("expect_task_end_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date expectTaskEndDate; @TableField("actual_task_end_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date actualTaskEndDate; @TableField("fly_place") private String flyPlace; } 帮我写一个根据id修改,但是projectName是BisProject类的, BisTask类的id关联BisTaskTower类的taskId, BisTower类的id关联BisTaskTower类的Id, BisTower类的projectId关联BisProject类的id, 用mybtais-plus修改,不要写mapper和sql
好的,以下是根据id修改BisTask类的方法,同时修改BisTask关联的其他类的相关信息:
```java
@Service
public class BisTaskService extends ServiceImpl<BisTaskMapper, BisTask> {
@Autowired
private BisTaskTowerMapper bisTaskTowerMapper;
@Autowired
private BisTowerMapper bisTowerMapper;
@Autowired
private BisProjectMapper bisProjectMapper;
/**
* 根据id修改BisTask类的相关信息
* BisTask类的id关联BisTaskTower类的taskId,
* BisTower类的id关联BisTaskTower类的towerId,
* BisTower类的projectId关联BisProject类的id
*
* @param id BisTask的id
* @param projectName BisProject的projectName
* @param bisTask BisTask对象,修改的其他属性值
* @return 是否修改成功
*/
public boolean updateBisTaskAndRelatedInfoById(Integer id, String projectName, BisTask bisTask) {
// 根据id查询BisTask
BisTask oldTask = getById(id);
if (oldTask == null) {
return false;
}
// 更新BisTask的属性值
oldTask.setTaskName(bisTask.getTaskName());
oldTask.setCreateTime(bisTask.getCreateTime());
oldTask.setTaskStatus(bisTask.getTaskStatus());
oldTask.setExpectTaskStartDate(bisTask.getExpectTaskStartDate());
oldTask.setActualTaskStartDate(bisTask.getActualTaskStartDate());
oldTask.setExpectTaskEndDate(bisTask.getExpectTaskEndDate());
oldTask.setActualTaskEndDate(bisTask.getActualTaskEndDate());
oldTask.setFlyPlace(bisTask.getFlyPlace());
// 更新BisTaskTower的属性值
QueryWrapper<BisTaskTower> bisTaskTowerQueryWrapper = new QueryWrapper<>();
bisTaskTowerQueryWrapper.eq("task_id", id);
List<BisTaskTower> bisTaskTowerList = bisTaskTowerMapper.selectList(bisTaskTowerQueryWrapper);
for (BisTaskTower bisTaskTower : bisTaskTowerList) {
bisTaskTower.setTaskId(oldTask.getId());
bisTaskTowerMapper.updateById(bisTaskTower);
}
// 更新BisTower的属性值
QueryWrapper<BisTower> bisTowerQueryWrapper = new QueryWrapper<>();
bisTowerQueryWrapper.in("id", bisTaskTowerList.stream().map(BisTaskTower::getTowerId).collect(Collectors.toList()));
List<BisTower> bisTowerList = bisTowerMapper.selectList(bisTowerQueryWrapper);
for (BisTower bisTower : bisTowerList) {
bisTower.setProjectId(bisProjectMapper.selectOne(new QueryWrapper<BisProject>().eq("project_name", projectName)).getId());
bisTowerMapper.updateById(bisTower);
}
// 更新BisTask
return updateById(oldTask);
}
}
```
需要注意的是,这里传入的BisTask对象只需要包含需要修改的属性值,其他属性值会从数据库中查询出来并更新。另外,需要注意更新BisTower时需要先根据BisTaskTower的towerId查询出BisTower对象,再根据BisTower的projectId查询出BisProject的id,最后更新BisTower的projectId。