zoukankan      html  css  js  c++  java
  • mybatis-动态SQL

    这边主要是mapper.xml的配置文件

    1, if条件的简单使用:

        <!-- 多个参数的形式,需要使用map来存储-->
        <!-- 只要是#{}这种形式的,都会以?形式替代,对应字符串形式,都会加上引号-->
        <!-- 只要是${}这种形式的,不会用?形式替代,传过来什么,就什么替代-->
        <select id="find" parameterType="map" resultType="User">
            <!--name为空时,不加条件-->
            select * from t_user
             <if test="name!=null">
                 where 
                ( username like #{name} or nickname like #{name})
             </if>
             
                order by ${sort} ${order}
            limit #{pageOffset},#{pageSize}
    
        </select>
        <select id="count" parameterType="map" resultType="int">
            select count(*) from t_user 
             <if test="name!=null">
                 where 
                ( username like #{name} or nickname like #{name})
             </if>
            
        </select>

    2, mybatis中没有else,如何做呢,使用choose

    <select id="find" parameterType="map" resultType="User">
            <!--name为空时,不加条件-->
            select * from t_user
             <if test="name!=null">
                 where 
                ( username like #{name} or nickname like #{name})
             </if>
              <if test="sort!=null">
                 order by ${sort}
                 <!--order by  默认就是asc,因此这样就行-->
                 <if test="order!=null"> ${order}
                 </if>
             </if>
                
            limit #{pageOffset},#{pageSize}
          
        </select>
    下面使用 choose,是为了让大家看choose的用法   其中when条件可以有多个 类似于java的switch case

    <
    select id="find" parameterType="map" resultType="User"> <!--name为空时,不加条件--> select * from t_user <if test="name!=null"> where ( username like #{name} or nickname like #{name}) </if> <if test="sort!=null"> order by ${sort} <choose> <when test="order!=null"> ${order}</when> <otherwise>asc</otherwise> </choose> </if> limit #{pageOffset},#{pageSize} </select>

     有多个条件要判断时,where怎么加

    第一种方式:  额外加入为 where 1=1 解决

    <
    select id="find" parameterType="map" resultType="User"> select * from t_user where 1=1 <if test="name!=null"> and ( username like #{name} or nickname like #{name}) </if> <if test="type!=null"> and type=#{type} </if> limit #{pageOffset},#{pageSize} </select>

    第二种方式 :使用mybatis的 where标签
    <select id="find" parameterType="map" resultType="User"> select * from t_user <where> <if test="name!=null"> <!--第一个条件不加and,后面几个都加--> ( username like #{name} or nickname like #{name}) </if> <if test="type!=null"> and type=#{type} </if> </where> limit #{pageOffset},#{pageSize} </select>
    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    Shell脚本中$0、$#、$@等的意义
    shell脚本中常见的一些特殊符号和作用详解
    shell脚本中的反引号,单引号,双引号与反斜杠
    Shell中反引号(`)与$()用法的区别
    自己在linux上编译、链接、动态库和静态库的学习笔记
    让ie6 7 8 9支持原生html5 websocket
    解决浏览器不兼容websocket
    WebSocket兼容到低版本浏览器
    UART和RS232/RS485的关系,RS232与RS485编程
    TTL和RS232之间的详细对比
  • 原文地址:https://www.cnblogs.com/xin1006/p/3316461.html
Copyright © 2011-2022 走看看