• MyBatis动态SQL中foreach和choose的简单介绍(day22)


    最近在学习mybatis,已经学到动态SQL中如何去使用foreach和choose那里了,今天的博客内容就简单的回顾一下今日学习的知识。

    一、概述

      动态SQL,是基于OGNL(object graph navigation languang)表达式,完成多条件查询等逻辑实现,用户实现动态SQL的元素主要有:

    if、trim、where、set、choose(when、otherwise)、foreach。

    二、foreach元素介绍

       foreach是一个迭代集合,通常用于int条件,属性有 item、index、collection:必须指定(list、array、map-key)、open、separator、close。

    三、choose(when、otherwise)元素介绍

      choose(when、otherwise)相当于Java中switch语句,当when有条件满足的时候,就跳出choose。

    四、代码展示

        foreach的代码展示(collection指定的数组array):

     1 <!--
     2         foreach
     3         数组 array
     4     -->
     5     <select id="getUserListByArray" parameterType="int" resultType="User">
     6         select * from smbms_user
     7         <where>
     8             userRole in 
     9             <foreach collection="array" item="roles" separator="," open="(" close=")">
    10                 #{roles}
    11             </foreach>
    12         </where>
    13     </select>

      foreach的代码展示(collection指定的集合list):

     1     <!--
     2         foreach
     3         集合 list
     4     -->
     5     <select id="getUserListByList" parameterType="Integer" resultType="User">
     6         select * from smbms_user
     7         <where>
     8             userRole in 
     9             <foreach collection="list" item="roleList" open="(" separator="," close=")">
    10                 #{roleList}
    11             </foreach>
    12         </where>
    13     </select>

      

      foreach的代码展示(collection指定的Map):

    1     <select id="getUserListMap1" parameterType="map" resultType="User">
    2         select * from smbms_user
    3         where userName like CONCAT('%',#{userName},'%')
    4         and userRole in 
    5         <foreach collection="roles" item="role" open="(" separator="," close=")">
    6             #{role}
    7         </foreach>
    8     </select>
     1     <!--
     2         foreach
     3         map  2
     4     -->
     5     <select id="getUserListMap2" parameterType="map" resultType="User">
     6         select * from smbms_user
     7         where userName like CONCAT('%',#{user.userName},'%')
     8         and userRole in
     9         <foreach collection="roles" item="role" open="(" separator="," close=")">
    10             #{role}
    11         </foreach>
    12     </select>

    五、END

        为了不错过每天的见面,请记得点击一下【关注】啊~

        作者:javagril,00后女生,一个IT界冉冉升起的新星,想带你遨游缤纷多彩的编程世界。

  • 相关阅读:
    中綴表達式求值的兩種方法
    两次bfs求树的直径的正确性
    感染linux脚本程序技术
    C# 动态代码执行
    中秋写了个狼吃羊的智力游戏
    做一个让人喜欢的人
    MySQL数据库安全配置指南
    用 VS 2005 生成 .NET 1.1 程序
    防止入侵和攻击的主要技术措施
    .NETZ 原理分析
  • 原文地址:https://www.cnblogs.com/cmf12/p/13960963.html
Copyright © 2020-2023  润新知