ssm-mybatis动态sql查询语句

本文详细介绍了SSM框架中MyBatis的动态SQL查询语句,包括if标签进行条件判断,where标签自动添加及去除多余and,choose、when、if和else实现选择性执行,set标签在更新语句中自动添加set并去除最后一个,trim标签用于增删前缀和后缀,foreach标签配合in操作,bind标签用于模糊查询,以及如何使用sql和include抽取和包含公共SQL片段。同时提到了OGNL表达式的应用,它是一种融合了Java和JavaScript特点的语言,常用于构建动态SQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis动态sql查询语句 以单表查询为列子
  1. if —条件判断
    2.where : 自动增加where ,去除第一个and
    3.choose when if()else if --else{}
    4.set --修改 自动增加set 去除最后一个,
    5.trim —可以增加,删除 前缀/后缀
    6.foreach—in
    7.bind —模糊查询
    8.sql --抽取公共的sql片段
    9.include --sql包含

OGNL表达式—一种介于java和javascript直间的语言,简单来讲就是整合语言。

 <select id="selectMoer1" resultType="flower">
          select  *  from flower  where 1=1
          <!-- OGNL表达式  -->
          <if test="param1!=null  and  param1!=''">
             and   name =#{param1}
          </if>
          <if test="param2!=null and param2!=''">
             and  production=#{param2}
          </if>
     </select>
 <select id="selectMoer2" resultType="flower">
          select  *  from flower  
       <where>
          <if test="param1!=null  and  param1!=''">
                and  name =#{param1}
          </if>
          <if test="param2!=null and param2!=''">
               and  production=#{param2}
          </if>
        </where>
     </select>

//单表查询
 <select id="selectMoer3" resultType="flower">
          select  *  from flower
         <where>
              <choose>
                  <when test="param1!=null and param1!=''">
                    and  name=#{param1}
                   </when>
                   <when test="param2!=null and param2!=''">
                     and  production=#{param2}
                   </when>
                   <otherwise>
                   1=1
                   </otherwise>
              </choose>
        </where>
   
     </select>

<update id="updateFlow" >
 
     update  flower   
      
      <set>
        <if test="param1!=null and  param1!=''">
        name =#{param1} ,
        </if>
        <if test="param2!=null and  param2!=''">
        production=#{param2},
        </if>
        id =#{param3},
     </set> 
        where  id =#{param3}
 </update>

<update id="updateFlow2" >
  update  flower   
      
      <trim prefix="set"  suffixOverrides=",">
       
        <if test="param1!=null and  param1!=''">
        name =#{param1} ,
        </if>
        
         <if test="param2!=null and  param2!=''">
        production=#{param2},
        </if>
  
        id =#{param3},
        
       </trim>
        where  id =#{param3}
 </update>   

 <select id="selectMore4" resultType="flower">
 
 SELECT  id,name, price  FROM  flower   WHERE  id  IN
 
 <foreach collection="list" open="("  separator="," close=")" item="it">
 
    #{it}
 </foreach>
 </select>



    <select id="selectMore5" resultType="flower">
   
          select <include refid="sq1"></include>  from flower  where 1=1
          <!-- OGNL表达式  -->
          <if test="param1!=null  and  param1!=''">
                
           <bind name="pa" value="'%'+param1+'%'"/>     
                      
             and   name like  #{pa}
          </if>
          <if test="param2!=null and param2!=''">
             and  production = #{param2}
          </if>
</select>


<sql id="sq1">
  id,name
 </sql>
 <select id="selectMore6" resultType="flower">
 
   select  *  from  flower   where  ${param1}=#{param2}
 
 </select>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值