mybatis多对多关联,向关联表插入数据方法

mybatis多对多关联,向关联表插入数据方法:
先向主表插入数据后,根据当前插入数据的ID,来向中间表插入数据
主要sql:


 
useGeneratedKeys="true" keyProperty="srId">
insert into
sys_role(sr_name,sr_stats,sr_describe,um_id,sr_create_time,sr_type)
values(#{srName},0,#{srDescribe},#{umId},#{srCreateTime},#{srType})




insert into sys_role_function
(
select sr.sr_id,sf.sf_id,sf.sf_type
from 
sys_role sr,sys_function sf
where 
sr.sr_id = #{srId} 
and sf.sf_id IN

#{vi}

)


实体类:
 public class SysRoleVO extends BaseVO implements Serializable{
private static final long serialVersionUID = -9057984582072265699L;
private String srId;//角色ID
    private String srName;//角色名称  
    private String srCreateTime;//添加时间       
    private List rflst ;


业务层调用:
String roleFunction = instance.getRolefunction();
String[] roleFunctionList = roleFunction.split(",");
List list = Arrays.asList(roleFunctionList);
instance.setRflst(list);
sysRoleService.addRole(instance);//先添加角色
sysRoleService.addRoleFunction(instance);//添加中间表数据,这个时候instance中已经有主键ID信息,list来存储权限集合ID


注意在执行完第一条sql后,在外部访问对象sysRoleVO的主键是已经存在的,类似hibernate持久化后对象已经拥有ID信息

你可能感兴趣的:(mybatis多对多关联,向关联表插入数据方法)