码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mybatis动态SQL(DynamicSQL)


    目录

    1. if

    2. where

    3. ​​​​​​​trim

    4. choose when otherwise

    5. foreach

    6. sql


    1. if

    if通过test属性中的表达式判断标签中的内容是否有效(是否拼接到sql中)

    条件判断,test为条件语句

    2. where

    同sql中where

    where: where中有条件成立,则sql会拼接上

    where 可以去除多余的and

    where都不成立时,去除sql条件中前多余的and去掉,但是不能除去之后的and

    3. ​​​​​​​​​​​​​​trim

     

    prefix/suffix:在标签内容前后添加指定的内容

    prefixOverrides/suffixOverrides: 在标签中前面或后面去掉指定的内容

    1. <select id="getEmpByCondition" resultType="emp">
    2. select * from t_emp
    3. <trim prefix="where" suffixOverrides="and">
    4. <if test="empName != null and empName != ''" >
    5. emp_name = #{empName} and
    6. if>
    7. <if test="age != null and age != ''" >
    8. age = #{age} and
    9. if>
    10. <if test="gender != null and gender != ''" >
    11. gender = #{gender} and
    12. if>
    13. trim>
    14. select>

    4. choose when otherwise

    choose 主要用于分支判断,类似于 java 中的switch case default

    1. <select id="getEmpByChoosen" resultType="emp">
    2. select * from t_emp
    3. <where>
    4. <choose>
    5. <when test="empName != null and empName != ''" >
    6. emp_name = #{empName}
    7. when>
    8. <when test="age != null and age != ''" >
    9. age = #{age}
    10. when>
    11. <when test="gender != null and gender != ''" >
    12. gender = #{gender}
    13. when>
    14. choose>
    15. where>
    16. select>

    5. foreach

    代码中所示,批量插入,遍历list中的元素,一次放入sql中

    • foreach:遍历
    • collection: 所要添加的集合
    • item:集合中每个实例对象
    • separator:遍历完成后的分隔符
    • open="xx" sql语句以xx开始
    • close="xx" sql语句以xx结束
    1. <insert id="insertEmpList" >
    2. insert into t_emp values
    3. <foreach collection="emplist" item="emp" separator=",">
    4. (null, #{emp.empName}, #{emp.age}, #{emp.gender},null)
    5. foreach>
    6. insert>

    6. sql

    sql拼接

    可以将sql中的某一部分收取出来,封装成一个xxx标签,通过标签插入到sql中合适的地方,从而进行拼接sql

    1. <sql id="empColumn">
    2. emp_id, emp_name, age, gender,dept_id
    3. sql>
    4. <select id="getEmpByChoosen" resultType="emp">
    5. select <include refid="empColumn"/> from t_emp
    6. select>

  • 相关阅读:
    SAP ME21N\ME22N\ME23N采购订单增强:抬头、行项目取值处理
    mybatis if标签或者when标签判断字符串是否相等
    【Maven教程】(九):使用 Maven 进行测试 ~
    有关服务器虚拟化的常见问题解答
    在供应链管理中,如何做好库存分析?库存分析有哪些监控指标?
    Serverless Devs 社区联合信通院邀请您参加 2022 中国 Serverless 用户调查
    K8s中的控制器和资源对象是什么关系呢?
    信息录入率百分百上海强化施工现场建筑工人实名制管理
    oracle行转列、列转行总结
    LeetCode中等题之找到 K 个最接近的元素
  • 原文地址:https://blog.csdn.net/qq_41950447/article/details/127837143
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号