すでにさまざまな 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; // ユーザー権限
}