[Improvement] Fix missing MyBatis @Param for role soft-delete mapper binding
- Dominant language
- Java
- Stars
- 3.2k
- Forks
- 935
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 339
Description
### What would you like to be improved?
Role deletion on the relational backend can reach RoleMetaMapper.softDeleteRoleMetaByRoleId(Long roleId) through the REST delete-role path. The provider SQL uses #{roleId}, but this mapper method currently lacks @Param("roleId"). That mismatch can cause MyBatis named-parameter binding failures at runtime during role deletion.
### How should we improve?
Add @Param("roleId") to RoleMetaMapper.softDeleteRoleMetaByRoleId (and keep provider SQL as #{roleId}), ensuring deterministic named binding across environments.
Here's a test to help:
```
@Test
public void testSoftDeleteRoleMetaByRoleIdHasNamedParam() throws NoSuchMethodException {
Method method = RoleMetaMapper.class.getMethod("softDeleteRoleMetaByRoleId", Long.class);
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
Assertions.assertEquals(1, parameterAnnotations.length);
Param param = null;
for (Annotation annotation : parameterAnnotations[0]) {
if (annotation instanceof Param) {
param = (Param) annotation;
break;
}
}
Assertions.assertNotNull(
param, "Missing @Param on softDeleteRoleMetaByRoleId may break MyBatis named binding.");
Assertions.assertEquals("roleId", param.value());
}
```
Contributor guide
Assessment
This issue has not been assessed yet.