• 动态SQL


    动态sql概述

    Mybatis框架的动态sql技术是一种根据特定条件拼接sql语句的功能,为了解决拼接sql语句字符串时的问题
    比如在页面中的复选框,文本框,单选框等等是否作查询或者选择,浏览器在传递给服务器时,有可能的值为null或者" "…此时在做sql语句拼接的时候就需要处理

    如果姓名文本框中没有数据则传递的是null,在传递数据时的sql语句就需要拼接字符串,此时姓名的if name = … 则未被拼接在sql语句当中

    if标签

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

     where


    1、若where标签中有条件成立,会自动生成一个where关键字进行拼接

    2、会自动将where标签中内容前多余的and去掉,但是不会加and,所以在第一个if之后的语句都要加and。也不会将内容后的and去掉

    3、如果没有任何一个条件成立,则where没有任何功能,即不会生成where关键字

     trim

    prefix,suffix:在整个标签内容前面或后面添加指定的内容
    prefixOverrides,suffixOverrides:在标签中内容前面或后面添加指定的内容

    choose、when、otherwise

    1. 例如
    2. choose: when(){}
    3. when(){}
    4. when(){}
    5. otherwise(){}
    6. 相当于java中的if(){}
    7. else if(){}
    8. else if(){}
    9. else{}
    10. when至少设置一个,otherwise做多设置一个
    11. 即只要一个条件满足,后面的条件就不会再判断了

     foreach

    1. collection:设置要循环的数组或集合
    2. item:用一个字符串表示数组或集合中的每一个数据
    3. separator:设置每次循环的数据之间的分隔符
    4. open:循环体之前以什么开始
    5. close:循环体之后以什么结束

    遍历集合和数组

    1. "insertBatchEmp">
    2. insert into emp values
    3. "empList" item="emp" separator=",">
    4. (null,#{emp.empName},#{emp.age},#{emp.gender},null)
    5. "deleteBatchEmpOne">
    6. delete from emp where emp_id in
    7. "empIds" item="empId" separator="," open="(" close=")">
    8. #{empId}
    9. "deleteBatchEmp">
    10. delete from emp where
    11. "empIds" item="empId" separator="or">
    12. emp_id = #{empId}

    批量添加

    1. 创捷mapper接口方法
    1. /**
    2. * 批量添加Emp数据
    3. * @param emps
    4. */
    5. void insertEmpByForeach(@Param("emps") List emps);
    1. 配置insert标签的映射文件
    1. "insertEmpByForeach">
    2. insert into emp values
    3. "emps" item="emp" separator=",">
    4. (null,#{emp.empName},#{emp.age},#{emp.gender},null)

     sql片段

    可以记录一段sql,在需要用的地方使用include标签进行引用

    1. "empColumns">
    2. emp_id,emp_name,age,gender,dept_id
    3. "empColumns"/>

  • 相关阅读:
    redis 的 java实现 —— jedis
    python-pandapower电力系统潮流计算无法收敛情况解决方法
    Flume原理概述与配置文件编写说明
    揭秘OLED透明拼接屏的参数规格:分辨率、亮度与透明度全解析
    Web前端大作业—电影网页介绍8页(html+css+javascript) 带登录注册表单
    使用rpm重新安装包
    《第一行代码》核心知识点:Android简介
    perl学习笔记(十五)智能匹配
    【PAT甲级 - C++题解】1096 Consecutive Factors
    几种经典排序算法
  • 原文地址:https://blog.csdn.net/m0_61916154/article/details/127108399