SSM-Project-Day03-角色管理-role-删除角色-错点:对数据库操作没有写parameterType
核心业务:本项目中该规定在删除角色自身信息的同时删除
角色与菜单的关系数据,角色与用户的关系数据
一、Dao
SysRoleDao
// 删除-按id
int deleteObject(Integer id);
SysRoleMenuDao
// 基于角色id 删除角色与菜单的
int deleteObjectsByRoleId(Integer roleId);
SysUserRoleDao
// 基于角色id 删除与用户的对应关系
int deleteObjectsByRoleId(Integer roleId);
二、Mapper.xml-三个Dao对应三个Mapper
SysRoleMapper
<!--根据角色id删除角色信息-->
<!--// 删除-按id
int deleteObject(Integer id);-->
<delete id="deleteObject" parameterType="int">
delete from sys_roles where id=#{id}
</delete>
SysRoleMenuMapper
<!--// 基于角色id 删除角色与菜单的
int deleteObjectsByRoleId(Integer roleId);-->
<delete id="deleteObjectsByRoleId" parameterType="int">
delete from sys_role_menus
where role_id=#{roleId}
</delete>
SysUserRoleMapper
<!--int deleteObjectsByRoleId(Integer roleId);-->
<delete id="deleteObjectsByRoleId">
delete from sys_user_roles
where role_id=#{roleId}
</delete>
MyBatis最大优势
1.Java与Sql分离:可维护性高
2.ORM:RowMap(行映射):反射
三、Service-一个Service调用三个Dao就够了
// 根据角色id删除角色信息以及关系数据(角色-用户 角色-菜单)
int deleteObject(Integer id);
// 建立连接
@Autowired
private SysRoleDao sysRoleDao;
@Autowired
private SysRoleMenuDao sysRoleMenuDao;
@Autowired
private SysUserRoleDao sysUserRoleDao;
@Override
public int deleteObject(Integer id) {
// 参数合法性验证
if(id==null||id<1){
throw new IllegalArgumentException("id参数无效");
}
// 删角色自身信息
int rows = sysRoleDao.deleteObject(id);
if(rows==0){
throw new ServiceException("用户可能已经不存在了");
}
// 删角色-菜单对应信息
sysRoleMenuDao.deleteObjectsByRoleId(id);
// 删角色-用户对应信息
sysUserRoleDao.deleteObjectsByRoleId(id);
// 返回结果
return rows;
}
四、Controller
// 删除角色信息(角色对应的菜单-对应的用户)
@RequestMapping("doDeleteObject")
@ResponseBody
public JsonResult doDeleteObject(Integer id){
sysRoleService.deleteObject(id);
return new JsonResult("delete Ok!");
}