java中用户对应多个角色时的新增、修改、删除处理操作
来源:互联网 发布:男士护肤品 知乎 编辑:程序博客网 时间:2024/05/16 14:10
java中用户对应多个角色时的新增、修改、删除处理操作
本例中在的数据库存储时,是采用存储多条记录
表如下:
如上表,在前端操作,后台接收到前端传来的值时,如:用户id为1,角色id为1,2(或者1,2,3,4等等),这时我们可以选择一种简单的处理方式,注意:仅仅说是可以选择。就是把原来数据库中存储的条件用户id为1的记录全部删除,然后再做新增操作,把所有的角色id再添加进去。
代码块
public interface UserDao { /** 新增用户角色 */ public void addUserRole(UserModel user); /** 删除用户角色 */ public boolean deleteUserRoleById(Integer userId);}
@Servicepublic class UserServiceImpl implements UserService{ @Autowired private UserDao userDao; @Override public void updateUserRole(UserModel model){ userDao.deleteUserRoleById(model.getUserId()); userDao.addUserRole(model); }}
当然,这样是可以的,但是如您所想,这种操作也存在一定的风险,如果执行过程中出现异常、错误之类的,那么,即便有回滚这一步,数据也是有可能会出现问题的。
那么,看下面这张表:
这时,当我们在前端操作,后台接收到前端传来的值时,如:用户id为1,角色id为1,3,4这种,此时我们考虑上面那种处理方式,把原来数据库中存储的条件用户id为1的记录全部删除,然后再做新增操作,把所有的角色id再添加进去。你会发现创建时间怎么办?所以我暂时想到的是:
代码块
public interface UserDao { /** 查询某用户所有角色记录 */ public List<UserModel> queryListById(UserModel user); /** 新增用户角色 */ public void addUserRole(UserModel user); /** 删除用户角色 */ public boolean deleteUserRoleById(Integer userId, Integer roleId); /** 更新用户角色 */ public boolean updateUserRole(UserModel user);}
@Servicepublic class UserServiceImpl implements UserService{ @Autowired private UserDao userDao; @Override public void updateUserRole(UserModel model){ // 查询所有已有角色记录 List<UserModel> list = userDao.queryListById(model.getUserId()); String[] idArr = model.getRoleIds().split(","); // 先做新增、修改 for (int i = 0; i < idArr.length; i++) { model.setRoleId(Integer.parseInt(idArr[i])); // 根据userId和roleId作为条件,如果更新失败说明数据库无此记录,则需要插入 if (!userDao.updateUserRole(model)) { model.setCreTime(DateUtil.getNowDate("YYYY-MM-dd")); // 新增操作 userDao.addUserRole(model); } } // 再做删除操作 for (UserModel user : list) { // 如果数据库中在前端传过来的值中没有匹配到,则可删除 if (model.getRoleIds().indexOf(user.getRoleId().toString()) == -1) { // 删除操作 userDao.deleteUserRoleById(user.getUserId(), user.getRoleId()); } } }}
这里补一句上段代码中(if判断条件)的sql:
UPDATE pub_user_role<set> role_id = #{roleId }</set><where> role_id = #{roleId } AND user_id = #{userId }</where>
阅读全文
0 0
- java中用户对应多个角色时的新增、修改、删除处理操作
- java操作ftp时单个用户对应多个目录问题
- jpa hibernate(1) 多对多,用户新增,只增加中间表对应角色关系,不增加角色role
- Oracle用户的新增、修改、删除及授权
- 迁移用户以及用户对应的角色
- sharepoint 中对splist的基本操作(新增item,修改,删除)
- 修改和删除用户角色+查看角色信息+修改角色+删除角色
- MySQL中新建用户,新建数据库,用户授权,删除用户,修改密码的相关操作
- JS实现动态表格的新增,修改,删除操作
- javaScript 数组的相关操作【修改、删除、新增、插入】
- ORACLE新增,授权,修改,删除用户
- SpringBoot+BootStrapTable+PageHelper用户新增,删除,修改
- mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql
- mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql
- Java中List迭代过程中删除、新增元素的处理
- XML新增、修改、删除、查询操作
- mybatis删除,修改,新增返回操作
- 在struts1中使用DispatchAction对应多个ActionForm,实现写一个Action实现增删改查操作---一个Action处理多个操作的能力
- IE7,8兼容textarea maxlength
- 小程序-文字超出限制
- JSON标准格式
- SpringMvc的运行流程
- [Selenium] selenium — selenium三种等待方式解读,waituntil sleep等
- java中用户对应多个角色时的新增、修改、删除处理操作
- Leetcode 79:Word Search
- 动态规划 0-1背包问题
- Android dispatchTouchEvent源码分析
- vue开发环境搭建(WebStorm)
- Eclipse中配置server——tomcat的三个发布目录的探究(亲测实验)(观止)(全网唯一,只此一家别无分号)
- Mysql数据库的备份与还原
- 工作日记2017.10.18 COALESCE、getOrDefault处理null值问题
- 17.Java位运算