SQL语句的动态拼接(1)

[1]为什么使用动态拼接?

    在自我学习中只是针对数据做简单的增删改查操作,但是在实际的业务中,经常会根据不同的情况执行不同的SQL语句才可以。这个问题如何解决呢?

[2]解决方案

    SQL语句的动态拼接

[3]动态拼接标签

   常见的动态拼接标签:if   where  choose   set  trim  foreach  bind  sql  include

mapper接口

    List<Flower> selectMore(String name,String production);
    List<Flower> selectMore2(@Param("pa") String name);
    List<Flower> selectMore3(String name,String production);
    List<Flower> selectMore4(String name,String production);

 mapper.xml文件

<!--
        if  if(){}
            if(){}
            if(){}
    -->
    <select id="selectMore" 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="selectMore2" resultType="flower">
        select  *  from  flower  WHERE  1=1
        <!--
          *如果按照条件查询的时候只有一个条件的时候接受参数必须起别名才可以
          -->
        <if test="aa!=null and aa!=''">
            and  name =#{aa}
        </if>
    </select>

    <!--
      where关键字 作用
        会自动的增加where关键字,并且会自动的去除第一个and
    -->
    <select id="selectMore3" resultType="flower">
        select  *  from  flower
        <where>
            <!--OGNL-->
            <if test="param1!=null and param1!=''">
                 AND  name =#{param1}
            </if>
            <if test="param2!=null  and  param2!=''">
                and  production=#{param2}
            </if>
        </where>
    </select>
      <!--
      choose
             if(){}
             else if(){}
             else if(){}
             else {}
      -->
    <select id="selectMore4" 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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值