最近做级联关系:首先是insert时,有可能同时插入一二三级表,也有可能一二级不变,只插入一二级下面的第三级表。所以DAO层一起执行三条sql语句,自动事务。dual是临时表,不用创建,直接写语句就可以了
<insert id="insertFirstRentalInThrid">
INSERT INTO firstrental(
<include refid="FirstRental_column_sql"/>
)
SELECT
#{fid },
#{fname}
FROM dual
WHERE not exists (select * from firstrental
where fid = #{fid});
</insert>
<insert id="insertSecondRentalInThrid">
INSERT INTO secondrental(
<include refid="SecondRental_column_sql"/>
)
SELECT
#{sid },
#{fid },
#{sname },
#{title },
#{content },
#{date },
#{tel },
#{address }
FROM dual
WHERE not exists (select * from secondrental
where sid = #{sid});
</insert>
接下来是update,也是一个道理,但是update直接用if就可以了
<update id="updateSecondRentalInThird" parameterType="com.rental.entity.SecondRental">
UPDATE secondrental
<set>
<if test="fid !=null">fid = #{ fid },</if>
<if test="sname !=null">sname = #{ sname },</if>
<if test="title !=null">title = #{ title },</if>
<if test="content !=null">content = #{ content },</if>
<if test="date !=null">date = #{ date },</if>
<if test="tel !=null">tel = #{ tel },</if>
<if test="address !=null">address = #{ address }</if>
</set>
WHERE
sid=#{sid}
</update>