已经找遍了各种 GPT,CSDN 的文章,没有看到正确的解决办法,普遍都是说 xml 文件位置问题 ……
报错代码#
- User 类
@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 接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
- 测试方法
@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)
@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; // 用户权限
}