Mybatis-plus可以关联删除吗


DELETE sm,sc,scc 
from school_collage sc 
LEFT JOIN school_major sm on sc.collage_id = sm.collage_id 
LEFT JOIN school_class scc on sm.major_id=scc.major_id 
WHERE sc.collage_id = #{collageId}

但是不知道怎么写入mapper中

举例:

 void deleteSchoolCollage(int collageId);

  <delete id="deleteSchoolCollage">
        DELETE sm, sc, scc
        FROM school_collage sc
        LEFT JOIN school_major sm ON sc.collage_id = sm.collage_id
        LEFT JOIN school_class scc ON sm.major_id = scc.major_id
        WHERE sc.collage_id = #{collageId}
    </delete>
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7703129
  • 这篇博客你也可以参考下:mybatis 怎么动态的自定义和解析 mapper 标签?
  • 除此之外, 这篇博客: mybatis-plus 一对多查询分页列表 结果集数量和数据总数量不匹配问题中的 1.5 mapper 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • public interface ClassMapper extends BaseMapper<ClassDO> {
        IPage<ClassVO> page(Page<User> page, User user);
    }
    
    <mapper namespace="com.lfh.demo.mapper.ClassMapper">
    
        <resultMap id="pageMap" type="com.lfh.demo.entity.vo.ClassVO">
            <result column="classId" property="classId"/>
            <result column="className" property="className"/>
            <collection property="userList" ofType="com.lfh.demo.entity.User" javaType="ArrayList">
                <result column="userName" property="name"/>
            </collection>
        </resultMap>
        <select id="page" resultMap="pageMap">
            select tc.id as classId, tc.class_name as className,
                tu.name as userName
            from t_class tc
            left join t_user  tu on tu.class_id = tc.id
        </select>
    </mapper>
    
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的内容,我们知道在使用Mybatis-plus的mapper接口调用时有哪些要求。在这个问题中,我们需要在mapper中编写代码来实现关联删除的功能。

    具体步骤如下:

    1.在mapper.xml文件中定义删除语句,包括需要删除的表和对应条件,例如:

    <delete id="deleteUserAndOrder" parameterType="java.lang.Long">
      delete from user where id = #{id};
      delete from order where user_id = #{id};
    </delete>
    

    这个操作可以实现同时删除user表和order表中与指定id相关的数据。

    2.在对应的mapper接口中定义对应的方法:

    public interface UserMapper extends BaseMapper<User> {
      int deleteUserAndOrder(Long id);
    }
    

    这个接口方法用于调用xml文件中定义的语句,并接收参数,返回删除的行数。

    3.在service层中调用这个接口方法,实现关联删除的功能:

    public boolean deleteUserAndOrder(Long id) {
      int result = userMapper.deleteUserAndOrder(id);
      return result > 0;
    }
    

    在service层中调用这个接口方法,传入需要删除的id,如果删除成功则返回true。

    这样我们就可以使用Mybatis-plus中的mapper来实现关联删除的功能了。