插入数据时涉及到级联的操作(几张表相互关联时需注意)
2015-07-31 16:29
513 查看
/** * @Title:insertAdminister * @Description: 增加用户操作,涉及到级联操作 1. 增加用户 2. 增加用户和角色的关联 3. 如果用户的角色不是超级管理员, * 还要增加企业相关信息 * * @param administer * : 要增加的用户 * @param roleId * : 角色ID * @param enterpriseId * : 新增的用户角色为企业关键人时,这个参数不能为空 * @return 0为失败,1为成功 * @throws */ @Override @Transactional(propagation = Propagation.REQUIRED) public boolean insertAdminister(Administer administer, Long roleId, Long enterpriseId) { // 1.参数检查,如果插入角色是企业关键人或流量卡管理员,必须要有企业。 if (administer == null || !checkAdminister(administer) || roleId == null || (roleId.toString().equals(ENTERPRISE_CONTACTOR) && enterpriseId == null) || (roleId.toString().equals(FLOWCARD_ADMIN) && enterpriseId == null) ) { return false; } // 2.检查重复问题 if (selectByUserName(administer.getUserName()) != null) {// 表中已有同名用户 return false; } // 3.插入用户 if (!insertSelective(administer)) { return false; } // 4.插入角色用户关系表(adminRole) if (!adminRoleService.insertAdminRole(administer.getId(), roleId)) { throw new TransactionException(); } // 5.如果插入角色是企业关键人或流量卡关键人,插入用户企业表(adminEnter) if ((roleId.toString().equals(ENTERPRISE_CONTACTOR)) && !adminEnterService.insert(administer.getId(), enterpriseId)) { throw new TransactionException(); }//6.如果是制卡专员,需要将OperatorId更新 else if(roleId.toString().equals(FLOWCARD_ADMIN)){ MdrcCardmaker mdrcCardmaker = mdrcCardMakerService.selectByPrimaryKey(enterpriseId); if(mdrcCardmaker==null){ throw new TransactionException(); } mdrcCardmaker.setOperatorId(administer.getId()); mdrcCardMakerService.update(mdrcCardmaker); } // 全部完成 return true; }
相关文章推荐
- POJ 3468 A Simple Problem with Integers
- 认识中间件
- MyEclipse逆向生成实体类和Hibernate映射文件
- HTML 标签列表(3)
- 分析函数keep用法,实现求最大最小值
- Power law distribution
- 大团队开发中的单点
- U3D开发第一课【追梦人】
- hdu 1024 Max Sum Plus Plus
- ant安装、环境变量配置及验证
- 【转】[2009国家集训队]小Z的袜子(hose)
- python数据结构与算法——队列
- sqlserver中的序列
- 怎么写出一本程序员风格的修真小说?
- jdk带的一些工具,强悍
- eclipes设置默认注释作者
- nginx进程间的通信机制源码分析(一)----共享内存
- July——Study English With Relax
- 在源码中编译自己的Android project
- js多行文本的处理方法