Mybatis06_动态SQL

25 篇文章 0 订阅
6 篇文章 0 订阅
文章讲述了在Mybatis中处理动态SQL时,如何解决if条件不满足导致的SQL错误。建议在where后添加恒成立条件,并使用trim进行前后截取。同时,文章介绍了choose、when、otherwise的使用,以及foreach在批量操作中的应用,如插入和删除数据。
摘要由CSDN通过智能技术生成

Mybatis06_动态SQL

  1. if

    • 数据是否有效,用null和’'判断
    • 存在的问题,有些条件不满足没被拼接<where和and导致sql出错>解决办法,where后面跟上一个恒成立条件,每个if都加and
  2. where

    • where中是否有if成立,动态将where拼接到sql
    • 将条件前多余的and会截取
    • 条件后多余的and无法截取
  3. trim

    将指定值在条件前后添加或截取

    • prefix:前添加
    • suffix:后添加
    • prefixoverriders:前截取
    • suffixoverriders:后截取
  4. choose|when|otherwise

    • choose,下面两个在choose中使用
    • when,类似于if…else if…else if,至少设置一个
    • otherwise,类似于else,至多设置一个
  5. foreach,批量添加,删除数据

    insert into delete from

    <!--    删除-->
    <!--    void deleteMoreEmp(@Param("empIds") Integer[] empIds);-->
        <delete id="deleteMoreEmp">
            delete from emp where emp_id in
            <foreach collection="empIds" item="empId" separator="," open="(" close=")">
                #{empId}
            </foreach>
        </delete>
    
    <!--    插入-->
    <!--    void insertMoreEmp(List<Emp> emps);-->
        <insert id="insertMoreEmp">
            insert into emp values
            <foreach collection="emps" item="emp" separator=",">
                (null,#{emp.empName},#{emp.age},#{emp.gender},null)
            </foreach>
        </insert>
    
    • collection指定遍历集合
    • item存放集合元素
    • separator添加分隔符
    • open,遍历内容以什么开始
    • close,遍历内容以什么结束
  6. sql片段

    • 记录sql
      • 使用include标签引用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值