首页 > 代码库 > Mybatis级联操作

Mybatis级联操作

  对于Mybatis级联操作,网上好多资料都在讲级联查询的一些Mapping的标签,但是对于级联更新和插入的资料不是很多,但是这似乎是和Mybatis关系不大,只是之前用Hibernate用习惯了,感觉这些东西是由持久层框架l来维护的,由于Mybatis比Hibernate高效,摒弃了这些,所以对于INSERT和UPDATE的级联关系大部分是由数据库本身去维护的。


级联更新

 有两个对象ABB的主键是A的外键,先需求是把B的保存后,在A的外键那随之更新:

(1)先插入B到数据库中,

(2)从数据库在查出

(3)将B对象setA中 更新A(或者插入B到数据库后得到其ID主键然后单纯的update A的该字段)

写法:

 <update id="updateUser" parameterType="User">

update user set

username=#{username},password=#{password},role=#{role},

photo=#{photo.id},

emails=#{emails}

where id=#{id}

</update>

 

返回插入或者更新的主键在Mapping中配置加上其中idMODEL对象表示逐渐的属性值:

keyProperty="id"  useGeneratedKeys="true"

级联删除:

 如果数据库外键关联设置为CASEADE:

      如果要删除多的一方,则可直接删除,并且与之关联的一方也删除了

  如果数据库关联外键没有设置为CASEADE

在删除时需要先把引用外键的一方设置为null,然后在删除。

级联插入;

先插入一条一的记录,然后得到其主键

然后查找出刚插入进去的记录,通过多的一方的SET方法将其SET进去

然后将多的一方的对象统一SAVE进去。

Mybatis级联操作