多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 一对多级联 在操作自己数据的时候,会把自己关联的数据也给操作了. 操作多的一方数据也会把一的一方数据进行操作. 1. 保存一的一方数据的时候能级联把多的一方数据也给保存了. 2. 删除一的一方数据的时候,能把多的一方的数据也给删除了. ## 条件 保存谁就在谁的XML设置级联 . ~~~ <set name="linkmans" inverse="true" cascade="save-update"> //设置级联 <!--外键字段名--> <key column="cust_id"></key> <!--多的一方全限定名--> <one-to-many class="com.like.bean.Linkman"></one-to-many> </set> ~~~ ## 一对多级联保存 ~~~ Customer customer = new Customer(); customer.setCust_name("jack"); Linkman linkman1 = new Linkman(); linkman1.setLkm_name("大秘"); Linkman linkman2 = new Linkman(); linkman2.setLkm_name("中书"); customer.getLinkmans().add(linkman1); customer.getLinkmans().add(linkman2); linkman1.setCustomer(customer); linkman2.setCustomer(customer); session.save(customer); //直接保存一的一方 ~~~ ## 一对多级联删除 ~~~ <!--配置一对多--> <set name="linkmans" inverse="true" cascade="save-update,delete"> //这里加上delete <!--外键字段名--> <key column="cust_id"></key> <!--多的一方全限定名--> <one-to-many class="com.like.bean.Linkman"></one-to-many> </set> ~~~ ## 多对多级联保存 保存谁就在谁的XML设置级联.在正式开发中基本不会用,多对多级联删除更不会去使用了(不符合业务逻辑). ~~~ <set name="roles" table="user_role" cascade="save-update,delete"> <!--自己在中间表外键字段名--> <key column="user_id"></key> <!--name:对方方全限定名. column:对方在中间表的外键字段名--> <many-to-many class="com.like.bean.Role" column="role_id"></many-to-many> </set> ~~~ 代码: ~~~ //两个用户 User user1 = new User(); user1.setName("jack"); User user2 = new User(); user2.setName("rose"); //三个角色 Role role1 = new Role(); role1.setRole_name("管理员"); Role role2 = new Role(); role2.setRole_name("仓管"); Role role3 = new Role(); role3.setRole_name("快递员"); //用户1关联角色 user1.getRoles().add(role1); user1.getRoles().add(role2); //用户2关联角色 user2.getRoles().add(role1); user2.getRoles().add(role3); //保存用户 session.save(user1); session.save(user2); ~~~ ## 一般的使用方法 添加: ~~~ User user = session.get(User.class, 8L); Role role = session.get(Role.class, 10L); user.getRoles().add(role); //不用去save() ~~~ 删除: ~~~ User user = session.get(User.class, 8L); Role role = session.get(Role.class, 10L); user.getRoles().remove(role); ~~~