java 連帶操作(兩張表關聯,一張表插入一條新資料,另外一張表也跟著插入一條新資料)
阿新 • • 發佈:2019-01-01
以角色許可權模組中增加功能為例子:
a) 概念:
連帶操作:首先先在Role表中插入一條資料,接著拿到rid,往Role-Acl表中插入一條資料
b)資料庫設計:
Role表:
Role-Acl表:
c) 程式碼實現:
RoleMap:
/** * * @Description: 新增角色 */ @Insert("insert into sys_role(rolename,creator,createtime,remark) VALUES(#{rolename},1,NOW(),#{remark})") @Options(useGeneratedKeys = true, keyProperty = "rid",keyColumn="rid") int addRole(SysRole sysRole);
RoleAclMap:
/** * * @Description: 插入到角色許可權表 */ @Insert("INSERT into sys_role_acl(rid,aid) VALUES(#{rid},#{aid})") int addRoleAcl(SysRoleAcl sysRoleAcl);
RoleService:
/** * @Description: 插入到角色許可權表 */ public Map addRole(SysRole sysRole, String[] aids) {int addRole = m_RoleMap.addRole(sysRole); Integer rid = sysRole.getRid(); // SysRoleAcl SysRoleAcl sysRoleAcl = new SysRoleAcl(); sysRoleAcl.setAid(Arrays.toString(aids)); sysRoleAcl.setRid(rid); m_RoleAclMap.addRoleAcl(sysRoleAcl); // 呼叫IRoleAclMap方法 Map tResultMap = newHashMap(); tResultMap.put("status", "fail"); if (addRole <= 0) { tResultMap.put("Msg", "新增失敗"); return tResultMap; } tResultMap.put("status", "success"); return tResultMap; }