解决myBatis中删除条件的拼接问题

 更新时间:2020年11月27日 14:41:32   作者:爽儿-歪歪  
这篇文章主要介绍了解决myBatis中删除条件的拼接问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

今天刚刚学习了mybatis,做了简单的对数据库的增删改查。在进行删除操作时,单条删除时很简单,但是批量删除的时候拼接删除条件却有些麻烦,现记录一下做法。

Sql语句中,当删除条件并不唯一的时候,我们有两种删除的sql语句,一种使用or拼接where中的条件,例如delete from 表名where 条件1 or 条件2,另一种是使用in 例如delete from 表名where 元素in( )

利用第一种删除语句在mybatis中的mapping.xml中进行拼接:

利用第二种删除语句在mybatis中的mapping.xml中进行拼接:

以上删除操作基本完成,但是,这样有一个缺陷,当查询条件idList中没有元素的时候,会删除整个表ac01中的记录。所以,我们需要对上述方法进行改进。

第二种删除语句进行改进后:

第一种删除语句进行改进后:

至此,删除操作完美完成。

补充知识:myBatis 查询时注意and拼接条件

<!-- 加个条件 -->

<sql id="queryjiachaAllPageId">
 <where>
  <if test="danweimc !=null and danweimc !=''">
  and jcb.danweimc like '%${danweimc}%'
  </if>
  <if test="ge_jianchaks !=null and ge_jianchaks !=''">
  and DATE_FORMAT(jcb.jianchaks, '%Y-%m-%d') >= #{ge_jianchaks}
  </if>
  <if test="le_jianchaks != null and le_jianchaks != ''">
  and DATE_FORMAT(jcb.jianchaks, '%Y-%m-%d') &lt;= #{le_jianchaks}
  </if>
  
  <if test="jiancharxm !=null and jiancharxm !=''">
  and jcb.jiancharxm like '%${jiancharxm}%'
  </if>
  <if test="zhuangtai !=null and zhuangtai !=''">
  and yhb.zhuangtai = ${zhuangtai}
  </if>
  <if test="danweilb !=null and danweilb !=''">
  and yhb.yinhuanmc like '${danweilb}%'
  </if>
  <if test="jiedao != null and jiedao !='' and jiedao !='110105000000'">
  and jcb.jiedao=#{jiedao}
  </if>
  <if test="danweimcs != null and danweimcs !=''">
  and jcb.danweimc = #{danweimcs}
  </if>
 </where>
 </sql>

例如上诉问题 要么都加and ,要么都不加 ,一定要注意,如果有加and 和没有加and的 查询会报错

以上这篇解决myBatis中删除条件的拼接问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Centos7使用yum安装MySQL及实现远程连接的方法

    Centos7使用yum安装MySQL及实现远程连接的方法

    因为MySQL被Oracle收购,目前推荐使用mariadb数据库。下面通过本文给大家分享Centos7使用yum安装MySQL及实现远程连接的方法,感兴趣的朋友一起看看吧
    2017-07-07
  • mysql 列转行,合并字段的方法(必看)

    mysql 列转行,合并字段的方法(必看)

    下面小编就为大家带来一篇mysql 列转行,合并字段的方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mysql 8.0版本更换用户密码的方法步骤

    mysql 8.0版本更换用户密码的方法步骤

    这篇文章主要给大家介绍了关于mysql 8.0版本更换用户密码的方法步骤,MySQL用户密码的修改是经常面临的一个问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • MySql游标的使用实例

    MySql游标的使用实例

    这篇文章主要介绍了MySql游标,需要的朋友可以参考下
    2014-06-06
  • SQL中Limit的基本与高级用法详解

    SQL中Limit的基本与高级用法详解

    在SQL中LIMIT是一个用于限制结果集返回的行数的子句,这篇文章主要给大家介绍了关于SQL中Limit的基本与高级用法,文中通过代码介绍的非常详细,对大家学习或者使用sql具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-04-04
  • MySQL事务实现可重复读

    MySQL事务实现可重复读

    MySQL数据库的默认事务隔离级别是可重复读,本文主要介绍了MySQL事务实现可重复读,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • MySql增量恢复的几种实现方法

    MySql增量恢复的几种实现方法

    本文主要介绍了MySql增量恢复的几种实现方法,通过增量备份与恢复,可以在系统发生故障或数据损坏时快速恢复到最新状态,提高系统的可靠性和可用性,感兴趣的可以了解一下
    2023-08-08
  • MySQL中的唯一性约束与NULL详解

    MySQL中的唯一性约束与NULL详解

    这里记录的是很久之前的一个 bug 了,主要给大家介绍了关于MySQL中唯一性约束与NULL的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 深入理解Mysql事务隔离级别与锁机制问题

    深入理解Mysql事务隔离级别与锁机制问题

    MySQL默认的事务隔离级别是可重复读,用Spring开发程序时,如果不设置隔离级别默认用MySQL设置的隔离级别,如果Spring设置了就用已设置的隔离级别,本文重点给大家介绍Mysql事务隔离级别与锁机制的相关知识,一起看看吧
    2021-09-09
  • 有关mysql优化的一些东东整理

    有关mysql优化的一些东东整理

    有关mysql优化的一些东东,自己整理的,网上搜集的,供朋友们学习参考吧
    2013-02-02

最新评论