• MyBatis如何使用delete标签删除数据呢?


    转自:

    MyBatis如何使用delete标签删除数据呢?

    MyBatis标签的功能

         MyBatis中delete标签的功能:用于定义delete 语句,其功能为执行删除操作。
        当 MyBatis运行delete标签后,会返回一个整数,此整数代表删除操作所影响的行数

    下文将通过示例的方式讲述delete标签的用法说明,如下所示: 

    1. 在 UserInfoMapper.xml 中使用 delete 标签添加一条 delete 语句,代码如下。

    
    delete from website where name = #{name}
    
    
    


    2.  在 UserInfoMapper 接口中增加一个 deleteUserInfo() 方法,代码如下。

    int deleteUserInfo(String name);
    
    参数为 String 类型的字符串
    返回值为 int 类型,返回运行sql语句后,被删除记录的行数。
     


    3. 测试代码

    //删除 name 为"java265" 的记录
    String name = "java265";
    int i = userInfoMapper.deleteUserInfo(name);
    System.out.println("共删除了 " + i + " 条记录");
     


    4. 运行测试代码,控制台输出以下信息---

    共删除了 3 条记录

    delete 标签常用属性

    属性名称描述备注
    id它和 Mapper 的命名空间组合起来使用,是唯一标识符,供 MyBatis 调用 如果命名空间+ id 不唯一,那么 MyBatis 抛出异常
    parameterType传入 SQL 语句的参数类型的全限定名或别名,它是一个可选属性。支持基本数据类型和 JavaBean、Map 等复杂数据类型
    flushCache该属性用于设置执行该操作后,是否会清空二级缓存和本地缓存,默认值为 true。-
    timeout该属性用于设置 SQL 执行的超时时间,如果超时,就抛异常。-
    statementType执行 SQL 时使用的 statement 类型, 默认为 PREPARED,可选值:STATEMENT,PREPARED 和 CALLABLE。 -
    delete标签注意事项:
        1.delete标签没有resultType 属性
        2.delete标签也可传递多个参数信息
    

    传递多个参数

    同其它标签一样,
    Mybatis 为delete标签为映射器传递多个参数提供以下方法:

    • 使用 Map 传递参数
    • 使用注解传递参数
    • 使用 JavaBean 传递参数

    使用 Map 传递参数

    将参数封装到一个 Map 对象中
    然后传递给 MyBatis 的映射器
    1. 在 UserInfoMapper 接口中,定义一个 deleteUserInfoByMap() 方法,并使用 Map 传递参数

    int deleteUserInfoByMap(Map params);
    


    2.在 UserInfoMapper.xml 中使用 delete 标签定义一个 delete 语句,并接收通过 Map 传递的参数,xml文件如下所示

    
    
    delete from userInfo where name = #{name} and notes= #{notes}
    lt;/delete>
     


    3. 测试代码如下。

    //使用 Map 向 delete 标签传递参数
    Map params = new HashMap<>();
    params.put("name", "Java爱好者");
    params.put("url", "www.java265.com");
    int i = userInfoMapper.deleteUserInfoByMap(params);
    System.out.println("通过 Map 传递参数,共删除了 " + i + " 条记录");
    
     


    4. 运行测试代码

    通过 Map 传递参数,共删除了 1 条记录

    使用注解传递参数

    MyBatis框架提供的 @Param 注解为注解器传递参数,如下例所示:
    1. 在 UserInfoMapper 接口中,定义一个 deleteUserInfoByParam() 方法,并使用 @Param 注解传递参数,方法如下

    int deleteUserInfoByParam(@Param("name") String name, @Param("notes") String notes);
     


    2. 在 UserInfoMapper.xml 中使用 delete 标签定义一个 delete 语句,并接收通过 @Param 注解传递的参数,配置如下。

    
     
    
    
     


    3. 测试代码

    //使用 @Param 注解传递参数
    String name = "java265";
    String url = "www.java265.com";
    int i = userInfoMapper.deleteUserInfoByParam(name, url);
    System.out.println("通过 @Param 注解传递参数,共删除了 " + i + " 条记录");
     


    4. 执行测试代码

    通过 @Param 注解传递参数,共删除了 1 条记录

    使用 JavaBean 传递参数

    当参数过多时,笔者建议使用JavaBean实体类的方式将参数信息传递给映射器
    1. 在 UserInfoMapper 接口中,定义一个 deleteUserInfoByJavaBean() 方法,并使用 JavaBean 传递参数,方法如下。

    int deleteUserInfoByJavaBean(UserInfo userInfo);
     


    2. 在 UserInfoMapper.xml 中使用 delete 标签定义一个 delete 语句,并接收通过 JavaBean 传递的参数,配置如下。

     
      
      
     delete 
    	 from userInfo
     where name = #{name} 
    	 and notes= #{notes} 
      
     
    


    3. 测试代码如下。

     
    
     
     
    	 //使用 JavaBean 传递参数到更新语句中 
    	 UserInfo userInfo = new userInfo(); 
    	 userInfo.setName("Java爱好者"); 
    	 userInfo.setNotes("https://www.java265.com/"); 
    	 int i = userInfoMapper.deleteUserInfoByJavaBean(website); 
    	 System.out.println("通过 JavaBean 传递参数,共删除了 " + i + " 条记录"); 
     
    


    4. 执行测试代码

    通过 JavaBean 传递参数,共删除了 3 条记录
    
  • 相关阅读:
    快让Live2D小可爱住进你的网站吧
    1505_TC275参考手册阅读笔记_调试系统
    51单片机-AT24C02(I2C总线)
    Linux用户分类和权限详解
    使用python生成文字视频
    各种神经网络的特点、应用和发展史
    第18章_主从复制
    厦门大学马来西亚分校打造更美好的智慧校园
    前端基础入门之JS的call、apply和argument
    Reinforcement Learning(二)--on-policy和off-policy
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/128053639