mybatis-plus中遇到的问题@Code Companion Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.elderlycare.mapper.DepartmentMapper.updateById] with root cause
ai是这么说的
因为同一个controller中的save方法没有报错,只有使用到主键的updateById和removeById出错,所以我重新检查了实体类,ok发现问题,实体类主键没有注解
修改之后:
添加了@TableId注解运行成功
--------------------------分割线----------------------------------------------------------------------------------
@TableId 是 MyBatis-Plus 框架提供的一个注解,用于标注实体类中的属性作为数据库表的主键字段。使用这个注解可以帮助 MyBatis-Plus 框架识别实体类与数据库表之间的主键映射关系。
以下是 @TableId 注解的一些用法和作用:
- 指定主键属性:在实体类的主键属性上使用 @TableId 注解,这样 MyBatis-Plus在执行插入(Insert)、更新(Update)、删除(Delete)等操作时,能够知道哪个字段是主键。
- 主键策略:@TableId 注解可以接受一个 type参数,该参数用于指定主键的生成策略。例如,AUTO(数据库自增)、NONE(无状态)、INPUT(手动输入)、ASSIGN_ID(分配ID,主键类型为数字)、ASSIGN_UUID(分配UUID,主键类型为字符串)等。
- 自定义主键名称:如果实体类的主键属性名称和数据库表的主键列名称不一致,可以使用 @TableId 的 value参数指定数据库表中的主键列名称。
下面是一个简单的实体类示例,展示了如何使用 @TableId 注解:
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
public class User {
// 使用 @TableId 注解标注这个字段为数据库表的主键
// 并且指定主键生成策略为自增
@TableId(value = "id", type = IdType.AUTO)
private Long id;
// 其他字段...
// Getters and Setters...
}
在上面的示例中,id 字段被标注为表的主键,并且指定了主键的生成策略为数据库自增。当你使用 MyBatis-Plus 的方法如 save 或 updateById 时,框架会自动识别和处理这个主键字段。