在删除时:
delete from sys_role_menu s left join sys_menu m ON s.menu_id = m.menu_id
where m.sys_type=1 and s.role_id in
~<~foreach item="roleId" collection="array" open="(" separator="," close=")">
#{roleId}
~<~/foreach>
这样会报错的。
而我没看出来哪里有错,改成查询:
select * from sys_role_menu s left join sys_menu m ON s.menu_id = m.menu_id
where m.sys_type=1 and s.role_id in
<foreach item="roleId" collection="array" open="(" separator="," close=")">
#{roleId}
</foreach>
这样是正确的。
那么问题呢?
原因是多张表关联时要指明删除的是哪张表,把别名写在delete后面。
delete s from sys_role_menu s left join sys_menu m ON s.menu_id = m.menu_id
where m.sys_type=1 and s.role_id in
<foreach item="roleId" collection="array" open="(" separator="," close=")">
#{roleId}
</foreach>
这样就可以了。