mybatis xml mapper 文件中 if-else 写法

导读:本篇文章讲解 mybatis xml mapper 文件中 if-else 写法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

原文地址:https://blog.csdn.net/weixin_38982591/article/details/104048388

mybaits 中没有else要用chose when otherwise 代替
模板:

<!--批量插入用户-->
<insert id="insertBusinessUserList" parameterType="java.util.List">
    insert into `business_user` (`id` , `user_type` , `user_login` )
    values
    <foreach collection="list" index="index" item="item" separator=",">
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <choose>
                <when test="item.id != null and item.id !=''">
                    #{item.id,jdbcType=CHAR},
                </when>
                <otherwise>
                    '',
                </otherwise>
            </choose>
            <choose>
                <when test="item.userType != null and item.userType !=''">
                    #{item.userType,jdbcType=VARCHAR},
                </when>
                <otherwise>
                    '',
                </otherwise>
            </choose>
        </trim>
    </foreach>
</insert>
<select id="selectSelective" resultMap="xxx" parameterType="xxx">
    select
    <include refid="Base_Column_List"/>
    from xxx
    where del_flag=0
    <choose>
        <when test="xxx !=null and xxx != ''">
            and xxx like concat(concat('%', #{xxx}), '%')
        </when>
        <otherwise>
            and xxx like '**%'
        </otherwise>
    </choose>
</select>

使用:

 <!--获取业务量发展报表月份倒序集合-->
    <select id="monthList" resultType="java.lang.Integer">
        select `month` from business_development
        <choose>
            <when test="#{topOrgCode} == #{orgCode}">
                where topOrgCode = #{topOrgCode}
            </when>
            <otherwise>
                where topOrgCode = #{topOrgCode} and code = #{orgCode}
            </otherwise>
        </choose>
        group by month order by month desc
    </select>

注意:
当parameterType使用java.util.Map时里不能使用#{xxx}形式,如:
java里:

			 Map<String, Object> ins = new HashMap<>();
            ins.put("mangId",request.getMangId());
            ins.put("type",request.getType());
            List<VideodModel> result = videoInfosDao.videoInfosBase(ins);

xml里根据type来判断,如果等于数字1则执行一种情况,如果是2执行另一种:

<select id="videoInfosBase" parameterType="java.util.Map" resultMap="videoInfosBaseResult">
        SELECT videoid,videoname,videocoverimg,videourl,duration
        FROM [dbo].[video_infos]
        WHERE convert(varchar(20),starttime,120) like '1900%'
        AND managerid = #{mangId}
        <choose>
            <when test="type == 1">
                AND (videourl like '%.mp4' OR
                videourl like '%.m3u8' OR
                )
            </when>
            <when test="type == 2">
                AND (videourl like '%.asf' OR
                videourl like '%.mp3' OR
                )
            </when>
        </choose>
        ORDER BY uploadtime desc
    </select>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/80354.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!