mybatis plus3.3中SpecialTask specialTask = new SpecialTask(); specialTask.setReason(obj.getReason()); specialTask.setId(obj.getId()); specialTaskService.insert(specialTask);打印出来==> Preparing: INSERT INTO CG_SPECIAL_TASK ( reason ) VALUES ( ? ) ==> Parameters: 阿萨德(String)为什么没有whereid=什么
时间: 2024-03-28 14:41:35 浏览: 79
根据你提供的代码和输出结果来看,是因为在`SpecialTask`类中没有为`id`字段添加`@TableId`注解或者使用`setId`方法设置了`id`字段的值,但是没有添加`@TableId`注解。因此,在执行`specialTaskService.insert(specialTask)`方法时,MyBatis-Plus并没有识别出`id`字段作为主键,所以生成的SQL语句中没有`where id = ?`部分。
要解决这个问题,你可以尝试以下两种方法中的任意一种:
1. 在`SpecialTask`类中为`id`字段添加`@TableId`注解,并设置`value`属性为`"id"`,例如:
```java
public class SpecialTask {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String reason;
// getter & setter
}
```
2. 在创建`SpecialTask`对象时,同时设置`id`字段的值,例如:
```java
SpecialTask specialTask = new SpecialTask();
specialTask.setReason(obj.getReason());
specialTask.setId(obj.getId()); // 这里设置id字段的值
specialTaskService.insert(specialTask);
```
在这两种方法中,MyBatis-Plus 都能够正确地识别出`id`字段作为主键,并在生成的SQL语句中添加`where id = ?`部分。
阅读全文