• 动态SQL


    1.动态SQL是MyBatis的一个强大特性,基于OGNL的表达式,可是我们方便的在SQL语句中 实现某些逻辑。

    2.动态SQL的元素如下:

    • if:利用if实现简单的条件选择。
    • choose(when,otherwise):相当于Java中的switch语句,通常与when和otherwise搭配。
    • where:简化SQL语句中的where条件判断。  if+where实现多条件查询
    • set:解决动态更新语句,它的主要功能和where元素差不多,主要是在包含的语句前输出一个set,若包含的语句是与逗号结束的,会自动把逗号忽略掉。
    • trim:可以灵活的去除多余的关键字。  if+trim实现多条件查询
    • foreach:迭代一个集合,通常用于in条件。

    3.在MyBatis中除了使用if+where实现多条件查询,还有一个更为灵活的元素trim可以替代之前的做法。trim元素也会自动识别其标签内是否有返回值,

    若有返回值,会在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,也可以把包含内容的首部某些内容覆盖(即忽略),或者把尾部的某些内容覆盖。

    4.trim的属性:

    • prefix:前缀,作用是通过自动识别是否有返回值后,在trim包含的内容上加上前缀。
    • suffix:后缀,作用是在trim包含的内容上加上后缀。
    • prefixOverrides:对于trim包含内容的首部进行指定内容的忽略。
    • suffixOverrides:对于包含内容的首尾部进行内容的忽略。

    5.使用foreach完成复杂查询

    • MyBatis入参为数组类型的foreach迭代
    • MyBatis入参为List类型的foreach迭代
    • MyBatis入参为Map类型的foreach迭代

    6.foreach基本属性:

    • item:表示集合中每一个元素迭代是的别名。
    • index:指定一个名称,用于表示在迭代过程中,每次迭代的位置。
    • open:表示该语句以什么开始。
    • separator:表示在每次进行迭代之间以什么符号作为分隔符。
    • close:表示该语句以什么结束。
    • collection:最关键并最容易出错的属性,需格外注意,该属性必须指定,不同情况下该属性值是不一样的。主要有三种情况:
    1. 若入参为单参数且参数类型是一个List的时候,collection属性值为list。
    2. 若入参为单参数且参数类型是一个数组的时候,collection属性值为array。
    3. 若传入参数为多参数,就需要把他们的封装为一个Map进行处理。

    7.MyBatis接收的参数类型:基本类型、对象、List、数组、Map。

    8.无论MyBatis的入参是哪种参数类型,MyBatis都会将参数放在一个Map中,对于单参入参类型的情况:

    • 若入参为基本类型:变量名作为key,变量值为value,此时生成的Map自由一个元素。
    • 若入参为对象:对象的属性名作为key,属性值为value。
    • 若入参为List:默认“list‘’作为key,该List即为value。
    • 若入参为数组:默认“array”作为key,该数组即为value。
    • 若入参为Map:键值不变。

      

  • 相关阅读:
    百万英雄答题值不值得您继续参加
    一个程序员&自媒体人的2017年终总结
    送书福利又来了,总共10本程序员技术书
    CCF 201912-2 回收站选址(100分)Java
    CCF 201912-1 报数 (100分)Java
    CCF 201909-2 小明种苹果(续)(100分)Java
    CCF 201909-1 小明种苹果(100分)Java
    初识JWT
    Redis学习——事务、消息订阅和发布
    Redis学习——数据类型及操作
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7446373.html
Copyright © 2020-2023  润新知