IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MyBatis——配置文件完成增删改查——删除 -> 正文阅读

[大数据]MyBatis——配置文件完成增删改查——删除

一、删除

  • 删除一个
  • 批量删除

(一)删除一个

  • 编写接口方法: Mapper接口 : void deleteById(int id);
  • 参数:id
  • 结果: void
  • 编写SQL语句: SQL映射文件
  • 执行方法,测试

1、编写接口方法: Mapper接口

    /**
     * 根据id删除
     *
     */
    void deleteById(int id);

2、编写SQL语句: SQL映射文件

<!--删除一个-->
    <delete id="deleteById">
        delete from tb_brand where id = #{id};
    </delete>

3、 执行方法,测试

/**
     * 删除
     * 根据id,删除一个
     */
    @Test
    public void testDeleteById() throws IOException {
        //接受参数
        int id = 7;

        //1、加载核心配置文件,获取SqlSessionFactory对象
        String resource = "mybatis-config.xml"; //定义配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取SqlSession对象,执行SQL语句
        SqlSession sqlSession = sqlSessionFactory.openSession(true);


        //3、执行sql
        //List<User> users = sqlSession.selectList("test.selectAll");

        //3.1 通过SqISession的getMapper方法获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        //3.2 调用对应方法完成sql的执行
        brandMapper.deleteById(id);

        //4、释放资源
        sqlSession.close();

    }

(二)批量删除

  • 编写接口方法: Mapper接口
  • 参数:id数组
  • 结果: void
  • 编写SQL语句: SQL映射文件
  • 执行方法,测试

1、编写接口方法: Mapper接口
把需要删除的记录的id放到一个数组中,遍历数据库中的表进行删除。

  void deleteByIds(int[] ids);

2、编写SQL语句: SQL映射文件
因为id放到了一个数组中,在编写SQL删除语句的时候可以写成:delete from tb_brand where id in (?,?,?),用占位符表示传入的数值,用in表示id在这些数值里面。

但是,要删除的个数是不确定的,也就是数组的长度是不确定的,就无法用几个占位符表示有几个。

所以我们应该先知道数组的长度是多少。
提供了foreach标签来完成数组的遍历

foreach标签

        where id in (
                <foreach collection="array" item="id" separator=",">
                    #{id}
                </foreach>
                );

collection:要遍历哪个数组。
需要注意的是:
mybatis会将数组参数封装成一个Map集合
collection后面默认写array
也可以使用@Param注解改变map集合的默认key的名称

  void deleteByIds(@Param("ids") int[] ids);
<foreach collection="ids" item="id" separator="," open="(" close=")">
     #{id}
</foreach>

item:遍历出来的每一个元素
#{id}为占位符,遍历几次就有几个“?”

separator:如果遍历了三次,就有三个占位符,它们之前是没有分开的,SQL语法报错,所以添加separator分隔符,用逗号分开。

在上述SQL语句中,in后面的括号可以进行优化,把括号去掉,在foreach标签里用open="(" 和 close=")",表示遍历开始加一个左括号,遍历结束加一个右括号。

        where id in 
                <foreach collection="array" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>

3、 执行方法,测试

   /**
     * 删除
     * 根据id,删除一个
     */
    @Test
    public void testDeleteByIds() throws IOException {
        //接受参数
        int[] ids = {3,5,6};

        //1、加载核心配置文件,获取SqlSessionFactory对象
        String resource = "mybatis-config.xml"; //定义配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取SqlSession对象,执行SQL语句
        SqlSession sqlSession = sqlSessionFactory.openSession(true);


        //3、执行sql
        //List<User> users = sqlSession.selectList("test.selectAll");

        //3.1 通过SqISession的getMapper方法获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        //3.2 调用对应方法完成sql的执行
        brandMapper.deleteByIds(ids);

        //4、释放资源
        sqlSession.close();

    }
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:37:48  更:2022-03-24 00:39:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:37:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码