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

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


  <!-- 添加角色数据-->
<insert id="addRole" parameterType="sysRoleVO"
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>

<!-- 添加角色和权限中间表数据采用下面的方式插入数据效率比较高;-->
<insert id="addRoleFunction" parameterType="sysRoleVO">
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
<foreach collection="rflst" item="vi"  open="(" separator="," close=")">
#{vi}
</foreach>
)
</insert>

实体类:
 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<String> rflst ;


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


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值