动态sql

1<if></if>的使用:

 <select id="roleById" resultType="Role" parameterType="Integer">
        SELECT * FROM role
        where 1=1
            <if test=" id != null">
               and id = #{id}
            </if>
    </select>

2<where>的使用

   <select id="roleAll" resultType="Role">
        SELECT * FROM role
       <where>
           <if test=" id != null">
                id = #{id}
           </if>
           <if test=" name != null">
              and name = #{name}
           </if>
           <if test=" remark != null">
               and remark = #{remark}
           </if>
       </where>
    </select>

3、<trim>的使用

   <insert id="roleAdd">
        insert into role
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <if test=" id !=null">id,</if>
                <if test=" name !=null">name,</if>
                <if test=" remark !=null">remark,</if>
            </trim>
-- suffixOverrides=","去掉最后一个逗号  suffix:后缀  prefix:前缀  prefixoverride:去掉第一个逗号  
        <trim prefix=" values(" suffix=")" suffixOverrides=",">
            <if test=" id !=null">#{id},</if>
            <if test=" name !=null">#{name},</if>
            <if test=" remark !=null">#{remark},</if>
        </trim>
    </insert>

4、<set>的使用

 <update id="roleUpdate">
        update role
                <set>
                    <if test=" name !=null">name=#{name},</if>
                    <if test=" remark !=null">remark=#{remark},</if>
                </set>
            where id=#{id}
    </update>

5、<foreach>的使用

建立一个实体类,里面封装一个 List<Integer> ids 的属性

package com.zy.bean;

import lombok.Data;

import java.util.List;

@Data
public class Role {
    private Integer id;
    private String name;
    private String remark;
    private List<Integer> ids;
}
  <!--
            collection:指定输入对象中的集合属性
            item:每次遍历生成的对象
            open:开始遍历时的拼接字符串
            close:结束时拼接的字符串
            separator:遍历对象之间需要拼接的字符串
          -->  



    <select id="roleByListId" resultType="Role" parameterType="Integer">
        SELECT * FROM role where id in 
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
    </select>

6.sql片段

 有时候可能某个 sql 语句我们用的特别多,为了增加代码的重用性,简化代码,我们需要将这些代码抽取出来,然后使用时直接调用。

  <!--定义sql语句-->
 <sql id="selectRole">
     <if test=" id != null">
         id = #{id}
     </if>
     <if test=" name != null">
         and name = #{name}
     </if>
     <if test=" remark != null">
         and remark = #{remark}
     </if>
 </sql>

<!--    调用sql语句-->
    <select id="roleAll" resultType="Role">
        SELECT * FROM role
       <trim prefix="where" prefixOverrides="and | or">
           <!-- 引用 sql 片段,如果refid 指定的不在本文件中,那么需要在前面加上 namespace -->
           <include refid="selectRole"></include>
       </trim>
    </select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值