zoukankan      html  css  js  c++  java
  • mybatis14 动态sql

    动态sql(重点)
    mybatis重点是对sql的灵活解析和处理。
    
    1.1需求
    将自定义查询条件查询用户列表和查询用户列表总记录数改为动态sql
    
    1.2if和where
    <!-- 自定义查询条件查询用户的信息
        parameterType:指定包装类型
        %${userCustom.username}%:userCustom是userQueryVo中的属性,通过OGNL获取属性的值
         -->
        <select id="findUserList" parameterType="userQueryVo" resultType="user">
            select id,username,birthday from user 
        <where>
            <!-- where标签相当 于where关键字,可以自动去除第一个and -->
            <if test="userCustom!=null">
                    <if test="userCustom.username!=null and userCustom.username!=''">
                        and username like '%${userCustom.username}%'
                    </if>
                    <if test="userCustom.sex!=null and userCustom.sex!=''">
                        and sex = #{userCustom.sex}
                    </if>clude refid="其它的sql片段"></include> -->
         </if>
            </where>
        </select>
    1.1sql片段
    通过sql片段可以将通用的sql语句抽取出来,单独定义,在其它的statement中可以引用sql片段。
    通用的sql语句,常用:where条件、查询列
    
    1.1.1sql片段的定义

     

    1.1.1 引用sql片段

    foreach
    
    在statement通过foreach遍历parameterType中的集合类型。
    
    需求:
    根据多个用户id查询用户信息。
    
    
    1.1.1在userQueryVo中定义list<Integer> ids
    
    在userQueryvo中定义list<Integer> ids存储多个id

    1.1.1修改where语句
    
    使用foreach遍历list:
    <foreach collection="ids" open=" AND id IN ( " close=")" item="id" separator=",">
                         #{id}    <!-- 16,循环 -->
                     </foreach>
        <!-- 
        如果拼接 SELECT id ,username ,birthday  FROM USER WHERE username LIKE '%小明%' AND (开始                id = 16 OR id = 22 OR id = 25循环             )结束 
         <foreach collection="ids" open=" AND ( " close=")" item="id" separator="OR">
                         id = #{id}   <!--  id = 16 ,循环 -->
    </foreach>

    1.1.1 测试代码

  • 相关阅读:
    lufylegendRPG游戏引擎 Yorhom's Game Box
    讨论交流 Yorhom's Game Box
    货币之间的大小写转换
    Unreal3的D3D渲染器部分
    Linxu宿主目录
    用于主题检测的临时日志(b25e234297d442ccba394dd2241308d2 3bfe001a32de4114a6b44005b770f6d7)
    Linux命令 文件命名规则 基础
    C#_GDI_文章粗略整合
    由IDisposable接口导致的using使用 以及using的其他用法
    ADO.NET基础备忘1_SqlConnection SqlCommand SqlDataReader
  • 原文地址:https://www.cnblogs.com/yaowen/p/4869747.html
Copyright © 2011-2022 走看看