SSM-Project-Day04-角色添加【作业:学习Mybatis id生成策略】

预备操作

一、绑定页面

 //    添加页面呈现
    @RequestMapping("doRoleEditUI")
    public String doRoleEditUI(){
        return "sys/role_edit";
    }

SSM-Project-Day04-角色添加【作业:学习Mybatis id生成策略】
二、添加操作业务分析
SSM-Project-Day04-角色添加【作业:学习Mybatis id生成策略】

一、Dao-涉及两个Dao

SysRoleDao

//    添加操作-保存角色信息
    int insertObject(SysRole entity);

SysRoleMenuDao

//    添加角色 保存角色与菜单的关系-看一下数据库的字段
//    roleid menuid
    int insertObjects(@Param("roleId") Integer roleId,
                      @Param("menuIds") Integer[] menuIds);

二、Mapper

SysRoleMapper.xml

<!--添加 传参是实体对象SysRole-->
    <!--useGeneratedKeys:表示要使用写入到表中的主键值
        keyProperty:表示将写入数据库中的主键值再赋给参数id属性-->
    <insert id="insertObject" parameterType="com.jt.sys.SysRole"
            useGeneratedKeys="true"
            keyProperty="id">
        insert into sys_roles 
         (id,name,note,createdTime,modifiedTime,
         createdUser,modifiedUser) 
         values
         (null,#{name},#{note},now(),now(),
         #{createdUser},#{modifiedUser})
 
    </insert>

SysRoleMenuMapper.xml

<!--插入数据-->
    <insert id="insertObjects">
        insert into sys_role_menus
        (role_id,menu_id)
        values 
        <foreach collection="menuIds"
                 separator=","
                 item="menuId">
            (#{roleId},#{menuId})
        </foreach>
    </insert>

三、Service

保存角色以及角色对应的菜单数据

    int saveObject(SysRole entity,Integer[] menuIds);
//    添加角色操作
    @Override
    public int saveObject(SysRole entity, Integer[] menuIds) {
//      1.  参数合法性验证
        if(entity==null){
            throw new IllegalArgumentException("保存对象不能为空");
        }
//        名字不能为空
        if(StringUtils.isEmpty(entity.getName())){
            throw new IllegalArgumentException("角色名不能为空");
        }
        if(menuIds==null||menuIds.length==0){
            throw new ServiceException("必须给角色分配一个权限");
        }
//       2. 存储用户信息
        int rows = sysRoleDao.insertObject(entity);
//        存储菜单信息        menuIds来自用户的选择, entity.getId()来自角色写入的信息id
        sysRoleMenuDao.insertObjects(entity.getId(),menuIds);
//        保存返回
        return rows;
    }

四、Controller

    @RequestMapping("doSaveObject")
    @ResponseBody
    public JsonResult doSaveObject(
            SysRole entity,Integer[] menuIds){
        sysRoleService.saveObject(entity,menuIds);
        return new JsonResult("save ok");
    }

错点:menuIds写成menusIds

SSM-Project-Day04-角色添加【作业:学习Mybatis id生成策略】
前端:
SSM-Project-Day04-角色添加【作业:学习Mybatis id生成策略】