MyBatis-Plus 中出现 org.apache.ibatis.binding.BindingException

已经找遍了各种 GPT，CSDN 的文章，没有看到正确的解决办法，普遍都是说 xml 文件位置问题 ……

报错代码

User 类

Copy
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class User {
@TableField("user_id")
private Long userId; // 用户ID
@TableField("user_name")
private String userName; // 用户名
@TableField("user_password")
private String userPassword; // 用户密码
@TableField("user_authority")
private Integer userAuthority; // 用户权限
}

Mapper 接口

Copy
@Mapper
public interface UserMapper extends BaseMapper<User> {

}

测试方法

Copy
@SpringBootTest
public class UserTest {
@Autowired
private UserMapper userMapper;

// 根据id查询用户
@Test
public void testSelectById() {
User user = userMapper.selectById(1);
System.out.println(user);
}
}

解决办法及原因

由于没有在 User 实体类中指定主键，所以 selectById 方法会找不到主键

所以解决办法就是在 User 实体类中加入 @TableId 指定主键 @TableId(value = "user_id", type = IdType.AUTO)

Copy
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class User {
// 在这里加入
@TableId(value = "user_id", type = IdType.AUTO)
@TableField("user_id")
private Long userId; // 用户ID

@TableField("user_name")
private String userName; // 用户名
@TableField("user_password")
private String userPassword; // 用户密码
@TableField("user_authority")
private Integer userAuthority; // 用户权限
}