在mapper.xml中根据一个ID删除多张表

<delete id="deleteWork">
    DELETE FROM a WHERE ID=#{id};
    DELETE FROM b WHERE WORK_ID=#{id};
    DELETE FROM c WHERE WORK_ID=#{id};
    DELETE FROM d WHERE WORK_ID=#{id};
    DELETE FROM e WHERE WORK_ID=#{id};
</delete>

此方法我尝试过,在Navicat中,直接执行是可行的,放入到xml中回抛出异常;于是替换为以下方式,执行程序正常。

<delete id="deleteWorkCircle">
        DELETE a,b,c,d,e
        FROM
            work_circle a
            LEFT JOIN circle_image b ON a.ID = b.WORK_ID
            LEFT JOIN circle_discuss c ON a.ID = c.WORK_ID
            LEFT JOIN circle_like d ON a.ID = d.WORK_ID
            LEFT JOIN circle_view e ON a.ID = e.WORK_ID
        WHERE
            a.ID = #{id};
</delete>    

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先需要定义一个对应表的Java实体类,如下所示: ```java public class User { private Integer id; private String name; private Integer age; private String email; // getter和setter方法省略 } public class Order { private Integer id; private String orderNo; private Integer userId; // getter和setter方法省略 } public class OrderDetail { private Integer id; private Integer orderId; private Integer productId; private Integer quantity; // getter和setter方法省略 } ``` 然后,在Mybatis定义对应的Mapper接口,如下所示: ```java public interface UserMapper { User selectUserById(Integer id); List<User> selectAllUsers(); void insertUser(User user); void updateUser(User user); void deleteUser(Integer id); } public interface OrderMapper { Order selectOrderById(Integer id); List<Order> selectOrdersByUserId(Integer userId); void insertOrder(Order order); void updateOrder(Order order); void deleteOrder(Integer id); } public interface OrderDetailMapper { List<OrderDetail> selectOrderDetailsByOrderId(Integer orderId); void insertOrderDetail(OrderDetail orderDetail); void updateOrderDetail(OrderDetail orderDetail); void deleteOrderDetail(Integer id); } ``` 在Mybatis配置文件,需要定义对应的Mapper映射关系,如下所示: ```xml <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> <mapper resource="com/example/mapper/OrderMapper.xml"/> <mapper resource="com/example/mapper/OrderDetailMapper.xml"/> </mappers> ``` 然后,在对应的Mapper XML文件,定义对应的SQL语句,如下所示: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <select id="selectUserById" parameterType="java.lang.Integer" resultType="com.example.entity.User"> SELECT id, name, age, email FROM user WHERE id = #{id} </select> <select id="selectAllUsers" resultType="com.example.entity.User"> SELECT id, name, age, email FROM user </select> <insert id="insertUser" parameterType="com.example.entity.User"> INSERT INTO user (name, age, email) VALUES (#{name}, #{age}, #{email}) </insert> <update id="updateUser" parameterType="com.example.entity.User"> UPDATE user SET name = #{name}, age = #{age}, email = #{email} WHERE id = #{id} </update> <delete id="deleteUser" parameterType="java.lang.Integer"> DELETE FROM user WHERE id = #{id} </delete> </mapper> <!-- OrderMapper.xml --> <mapper namespace="com.example.mapper.OrderMapper"> <select id="selectOrderById" parameterType="java.lang.Integer" resultType="com.example.entity.Order"> SELECT id, order_no, user_id FROM order WHERE id = #{id} </select> <select id="selectOrdersByUserId" parameterType="java.lang.Integer" resultType="com.example.entity.Order"> SELECT id, order_no, user_id FROM order WHERE user_id = #{userId} </select> <insert id="insertOrder" parameterType="com.example.entity.Order"> INSERT INTO order (order_no, user_id) VALUES (#{orderNo}, #{userId}) </insert> <update id="updateOrder" parameterType="com.example.entity.Order"> UPDATE order SET order_no = #{orderNo}, user_id = #{userId} WHERE id = #{id} </update> <delete id="deleteOrder" parameterType="java.lang.Integer"> DELETE FROM order WHERE id = #{id} </delete> </mapper> <!-- OrderDetailMapper.xml --> <mapper namespace="com.example.mapper.OrderDetailMapper"> <select id="selectOrderDetailsByOrderId" parameterType="java.lang.Integer" resultType="com.example.entity.OrderDetail"> SELECT id, order_id, product_id, quantity FROM order_detail WHERE order_id = #{orderId} </select> <insert id="insertOrderDetail" parameterType="com.example.entity.OrderDetail"> INSERT INTO order_detail (order_id, product_id, quantity) VALUES (#{orderId}, #{productId}, #{quantity}) </insert> <update id="updateOrderDetail" parameterType="com.example.entity.OrderDetail"> UPDATE order_detail SET order_id = #{orderId}, product_id = #{productId}, quantity = #{quantity} WHERE id = #{id} </update> <delete id="deleteOrderDetail" parameterType="java.lang.Integer"> DELETE FROM order_detail WHERE id = #{id} </delete> </mapper> ``` 最后,在Java程序调用对应的Mapper接口方法,即可完成对应的增删改查操作,如下所示: ```java SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.selectUserById(1); List<User> userList = userMapper.selectAllUsers(); user.setName("Tom"); userMapper.updateUser(user); userMapper.deleteUser(1); OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class); Order order = orderMapper.selectOrderById(1); List<Order> orderList = orderMapper.selectOrdersByUserId(1); order.setOrderNo("20210315"); orderMapper.insertOrder(order); orderMapper.updateOrder(order); orderMapper.deleteOrder(1); OrderDetailMapper orderDetailMapper = sqlSession.getMapper(OrderDetailMapper.class); List<OrderDetail> orderDetailList = orderDetailMapper.selectOrderDetailsByOrderId(1); orderDetailMapper.insertOrderDetail(orderDetail); orderDetailMapper.updateOrderDetail(orderDetail); orderDetailMapper.deleteOrderDetail(1); sqlSession.commit(); sqlSession.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值