int s = tbModulePermissionsService.updateCustom("INSERT INTO tb_module_permissions (" + "create_time,module_id,phone,p_id," + "sort_id,status,update_opr,update_time," + "is_person) " + "(SELECT " + "#{p[0]},#{p[1]},phone,1," + "#{p[2]},#{p[3]},phone,#{p[4]}," + "#{p[5]} from tb_user_info where isDelete = 0 and instr(#{p[6]}, level) > 0 and instr(#{p[7]}, channel_id) > 0)", new Object[]{ tbModuleInfo.getCreateTime(), tbModuleInfo.getModuleId(), tbModuleInfo.getSortId(), tbModuleInfo.getModuleStatus(),tbModuleInfo.getCreateTime(), tbModuleInfo.getIsPerson(), tbModuleInfo.getLe(),tbModuleInfo.getChannel() });不要updateCustom方法,怎么优化
时间: 2024-04-14 18:30:14 浏览: 45
java_phone_message.rar_boot screen in java_phone_开机短信
如果不使用`updateCustom`方法,可以考虑使用MyBatis的注解方式来优化这段代码。
首先,在Mapper接口中定义一个更新方法,如下所示:
```java
@Update("INSERT INTO tb_module_permissions (create_time, module_id, phone, p_id, sort_id, status, update_opr, update_time, is_person) " +
"SELECT #{createTime}, #{moduleId}, phone, 1, #{sortId}, #{moduleStatus}, phone, #{createTime}, #{isPerson} " +
"FROM tb_user_info " +
"WHERE isDelete = 0 AND instr(#{le}, level) > 0 AND instr(#{channel}, channel_id) > 0")
int updateModulePermissions(@Param("createTime") String createTime,
@Param("moduleId") int moduleId,
@Param("sortId") int sortId,
@Param("moduleStatus") int moduleStatus,
@Param("isPerson") int isPerson,
@Param("le") String le,
@Param("channel") String channel);
```
然后,在Service层调用该更新方法,如下所示:
```java
int s = tbModulePermissionsService.updateModulePermissions(
tbModuleInfo.getCreateTime(),
tbModuleInfo.getModuleId(),
tbModuleInfo.getSortId(),
tbModuleInfo.getModuleStatus(),
tbModuleInfo.getIsPerson(),
tbModuleInfo.getLe(),
tbModuleInfo.getChannel()
);
```
通过使用MyBatis的注解方式,将原来的自定义SQL语句替换为更简洁、易读的方式来执行数据库操作,同时避免了直接拼接SQL字符串带来的潜在问题。这种方式可以提高代码的可读性和可维护性。
阅读全文