• 14. Mybatis 删除操作-delete


    1. delete 标签

    delete 标签是用于定义delete 语句的.

    1.1 常用属性

    delete 有几个常用的属性, 但是通常只需要设置id 即可.

    • id: sql 片段在命名空间内的唯一标识. 和mapper 中方法名保持一致

    • parameterType: 参数类型, 通常都可以省略.

    • flushCache: 是否刷新(清空)一级缓存和二级缓存, 默认为true. 笔者尝试设置为false,并不生效. 所以使用默认即可.

    • timeout: sql 执行超时时间, 默认未设置, 由数据库驱动决定.

    • statementType: 执行sql时使用的statement类型, 默认为PREPARED. 可选值为:STATEMENT,PREPARED 或 CALLABLE 的一个

    1.2 返回值

    • 我们知道, jdbc 执行删除语句时, 返回的是sql 执行影响的记录条数. Mybatis 可将此返回结果自动封装为int , long, boolean 以及其对应的包装类型.
    • 对于不同的返回类型, sql 片段的写法是完全一致的

    Mapper中方法定义:

    // 返回值为空
    void delete(Long id);
    
    // 返回值为布尔类型
    boolean delete(Long id);
    
    // 返回值为删除的条数
    long delete(Long id);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    sql 片段:

    
        delete from t_employee where id = #{id}
    
    
    • 1
    • 2
    • 3

    2. delete 标签举例

    2.1 sql 片段

    
    
        delete from t_employee where id = #{id}
    
    
    
    
        delete from t_employee
        where id in
        
            #{id}
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.2 mapper 文件

    public interface EmployeeMapper {
    
        // 删除, 返回是否删除
        boolean delete(Long id);
    
        // 批量删除, 返回成功删除的个数
        long batchDelete(List ids);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.3 测试类

    // 测试删除方法
    @Test
    public void delete(){
        EmployeeMapper employeeMapper = SqlSessionUtil.getMapper(EmployeeMapper.class, true);
        boolean flag = employeeMapper.delete(9L);
        Assert.assertEquals(true, flag);
    }
    
    // 测试批量删除
    @Test
    public void batchDelete(){
        EmployeeMapper employeeMapper = SqlSessionUtil.getMapper(EmployeeMapper.class, true);
    
        List idList = Arrays.asList(1L, 2L, 3L, 4L, 5L);
        long cnt = employeeMapper.batchDelete(idList);
    
        Assert.assertEquals(5L, cnt);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    RSA概念详解及工具推荐大全 - lmn
    ChainLight zkSync Era漏洞揭秘
    云计算与大数据第10章 大数据应用习题带答案
    LintCode 3. 统计数字 Python
    异步事件实现原理
    Sleuth+Zipkin 链路追踪
    如何读取resources目录下的文件路径(九种方式)
    字节跳动面试问到Hadoop源码,拿40K进大厂的Java程序员必备技能,你还不学习?不想进大厂
    合合TextIn - 大模型加速器
    【Python深度学习】Python全栈体系(二十九)
  • 原文地址:https://blog.csdn.net/web15085599741/article/details/126317101