加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.ikongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2022-12-19 15:26:44 所属栏目:MySql教程 来源:
导读:  MyBatis如何使用delete标签删除数据呢?

  MyBatis标签的功能

  MyBatis中delete标签的功能:用于定义delete 语句,其功能为执行删除操作。

  当 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 传递参数
 
  将参数封装到一个 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 条记录
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!