使用mapper动态标签,创建Vo层是实现批量删除;

本文介绍了如何利用Mapper动态标签来创建Vo层,从而实现批量删除功能。在执行过程中遇到更新数量为0的错误,问题出在SQL语句上。纠正后的SQL语句能够正确执行批量删除操作。同时,提供了VO层代码、JUnit测试以及Utils工具类的封装,强调在使用动态代理开发时手动提交事务的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用mapper动态标签,创建Vo层是实现批量删除;

 

执行失败(DEBUG [main] - <==    Updates: 0);

日志显示如下;

使用mapper代理开发(创建Vo层,PS;vo层和数据库没有任何的联系)是因为sql语句错误导致,

正确的sql语句应该如下;

    <!--有起始的,结束的,item=id -->
    <delete id="deleteOrders" parameterType="com.baidu.mybatis.vo.OrdersVo">
        delete from orders
        <where>
            <foreach collection="ids" open="id in (" close=")" item="id" separator=",">
                #{id}
            </foreach>
        </where>

    </delete>

 

 

批量删除运行;

正确的结果(sql语句)如下;

 


 附上VO层,Junit测试,utils代码;

 

vo层;

package com.baidu.mybatis.vo;

import com.baidu.mybatis.model.Orders;

import java.util.List;

/**
 * @auther SyntacticSugar
 * @data 2018/9/12 0012下午 5:03
 *
 * vo 是活跃在业务逻辑层,和数据库没有任何的关联
 *
 */
public class OrdersVo {
    public List<Integer> ids;  //
    //把id 封装到集合对象ids中,通过传递ids实现多条SQL语句的删除操作

    public List<Integer> getIds() {
        return ids;
    }

    public void setIds(List<Integer> ids) {
        this.ids = ids;
    }
}

 

单元测试;

    @Test
    public void test02() {
        OrdersVo vo = new OrdersVo();
        ArrayList<Integer> ids = new ArrayList<>();
        ids.add(5);//删除id  为5  6的两条数据
        ids.add(6);
        //
        vo.setIds(ids);
        //调用实现类执行
        OrdersServiceImpl os = new OrdersServiceImpl();
        os.deleteOrders(vo);
    }

 

Utils 封装工具类(获取会话session);

相对于封装 sqlSession 的工具类来讲,使用动态代理开发来讲,比起工具类来说更方便;这里不做详细介绍;

package com.baidu.mybatis.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
/**
 * @auther SyntacticSugar
 * @data 2018/9/12 0012上午 10:33
 */
public class MybatisUtils {
    private static SqlSession session;
    /**
     * 获取会话工厂
     */
    public static SqlSession getSqlSession() {
        try {
            InputStream in  = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            session = factory.openSession();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return session;
    }

}

 

实现类中关于增删改操作一定要手动提交事务;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值