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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM