0
点赞
收藏
分享

微信扫一扫

03. Mybatis动态sql

eelq 2022-03-11 阅读 23

1. if:值为真,才拼接

<select id="findUserById" resultType="user">
    select * from user where 
        <if test="id != null">
               id=#{id}
        </if>
    and deleteFlag=0;
</select>

2. where:动态干掉多余的where或者and或者or

<select id="findUserById" resultType="user">
    select * from user 
        <where>
            <if test="id != null">
                id=#{id}
            </if>
            and deleteFlag=0;
        </where>
</select>

3. trim:修剪

上面的where标签,其实可以用trim来表示:当where后面紧跟and 或者or的时候,去掉and或者or

<trim prefix="WHERE" prefixOverrides="AND |OR ">
    ... 
</trim>

还有set标签,也可以用trim来表示:当set后面紧跟,的时候,可以去掉,

<trim prefix="SET" suffixOverrides=",">
  ...
</trim>

4. foreach:遍历

<select id="selectPostIn" resultType="domain.blog.Post">
    SELECT *
    FROM POST P
    WHERE ID in
    <foreach item="item" index="index" collection="list"
        open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

5. choose when:选择

<select id="findActiveBlogLike"
     resultType="Blog">
    SELECT * FROM BLOG WHERE state = ‘ACTIVE’
    <choose>
        <when test="title != null">
            AND title like #{title}
        </when>
        <when test="author != null and author.name != null">
            AND author_name like #{author.name}
        </when>
        <otherwise>
            AND featured = 1
        </otherwise>
    </choose>
</select>
举报

相关推荐

0 条评论