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!");
    }

五、运行结果

错点:对数据库操作没有写parameterType

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31416771/article/details/88826260