处理添加角色,但是同时添加角色关系表(部门表)的处理方式
关系表 部门表同时需要添加数据,
/**
* 添加角色和部门关系表数据
* @param roleId
* @param menuId
* @return
*/
int insertObjects(@Param("roleId") Integer roleId,@Param("menuIds")Integer[] menuId);
添加关系表的sql处理
角色id可以从角色表持久化后获得
sysRoleMenuDao.insertObjects(entity.getId(),menuIds);
在原型图中部门可以添加多个,所有需要遍历添加
<insert id="insertObjects" parameterType="com.cy.pj.sys.entity.SysRole">
insert into sys_role_menus (role_id,menu_id) values
<foreach collection="menuIds" separator="," item="item">
(#{roleId},#{item})
</foreach>
</insert>
角色表添加的sql处理
<!-- 持久化角色自身信息
其中:useGeneratedKeys表示使用insert操作执行以后的主键值
keyProperty 表示将主键赋值给对象SysRole的id属性
-->
<insert id="insertObject" parameterType="com.cy.pj.sys.entity.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>
关键代码也可替换为
<selectKey keyProperty="id" order="AFTER" resultType="int">
select last_insert_id()
</selectKey>
useGeneratedKeys表示使用insert操作执行以后的主键值
keyProperty 表示将主键赋值给对象SysRole的id属性
public int saveObject(SysRole entity, Integer[] menuIds) {
//1.合法性验证
if(entity == null){
throw new ServiceException("保存数据不能为空");
}
if(StringUtils.isEmpty(entity.getName())){
throw new ServiceException("角色名不能为空");
}
//2.保存数据
int rows = sysRoleDao.insertObject(entity);
sysRoleMenuDao.insertObjects(entity.getId(),menuIds);
//3.返回结果
return rows;
}