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 的一个
<delete id="deleteAuthor" parameterType="domain.blog.Author" flushCache="true" statementType="PREPARED" timeout="20">

</delete> 

1.2 返回值

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

Mapper中方法定义:

// 返回值为空
void delete(Long id);

// 返回值为布尔类型
boolean delete(Long id);

// 返回值为删除的条数
long delete(Long id);

sql 片段:

<delete id="delete">
    delete from t_employee where id = #{id}
</delete>

2. delete 标签举例

2.1 sql 片段

<!-- 通过id 删除 -->
<delete id="delete">
    delete from t_employee where id = #{id}
</delete>

<!-- 批量删除 -->
<delete id="batchDelete">
    delete from t_employee
    where id in
    <foreach collection="list" open="(" separator="," close=")" item="id">
        #{id}
    </foreach>
</delete>

2.2 mapper 文件

public interface EmployeeMapper {

    // 删除, 返回是否删除
    boolean delete(Long id);

    // 批量删除, 返回成功删除的个数
    long batchDelete(List<Long> ids);
}

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<Long> idList = Arrays.asList(1L, 2L, 3L, 4L, 5L);
    long cnt = employeeMapper.batchDelete(idList);

    Assert.assertEquals(5L, cnt);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值