我希望实现通过id修改数据库对应字段的值的功能,主要想修改status和admin_id(admin_id是外键,连接users表格的id字段)。但是我发现运行之后status修改成功了,但是admin_id一直为空,且控制台没有报任何错误。这是什么情况呢?下面是我详细的代码以及数据库对应表:
我的cat_adoption表格:
CREATE TABLE `cat_adoption` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`cat_id` int(11) NOT NULL,
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`status` enum('待审核','已审核') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`publish_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`admin_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `cat_adoption_ibfk_1` (`user_id`),
KEY `cat_adoption_ibfk_2` (`cat_id`),
KEY `cat_adoption_ibfk_3` (`admin_id`),
CONSTRAINT `cat_adoption_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
CONSTRAINT `cat_adoption_ibfk_2` FOREIGN KEY (`cat_id`) REFERENCES `cat` (`id`),
CONSTRAINT `cat_adoption_ibfk_3` FOREIGN KEY (`admin_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
我的java类:
@Data
@TableName("cat_adoption")
public class Adopt {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer userId;
private Integer adminId;
private Integer catId;
private String content;
private String status;
private LocalDateTime publishTime;
}
我的接口部分代码:
// 更新表格内容(根据id更新状态)
@PutMapping("/update")
public Result update(@RequestBody Adopt adopt) {
adoptService.updateStatusById(adopt);
return Result.success();
}
public void updateStatusById(Adopt adopt) {
adoptMapper.updateStatusById(adopt);
}
@Update("update `cat_adoption` set " +
"content = #{content}, admin_id = #{adminId}," +
" publish_time = now(), status = '已审核' " +
"where id = #{id}")
void updateStatusById(Adopt adopt);