SSM-Project-Day04-角色添加【作业:学习Mybatis id生成策略】
预备操作
一、绑定页面
// 添加页面呈现
@RequestMapping("doRoleEditUI")
public String doRoleEditUI(){
return "sys/role_edit";
}
二、添加操作业务分析
一、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
前端: