zoukankan      html  css  js  c++  java
  • 【mybatis】mybatis中避免where空条件后面添加1=1垃圾条件的 优化方法 标签

    在mybatis中拼接查询语句,偶尔会出现where后面可能一个字段的值都没有,就导致所有条件无效,导致where没有存在的意义;但也有可能这些条件会存在。那解决这个问题的方法,最常见的就是:

    在where后面添加1=1

    <select id="findActiveBlogLike" resultType="Blog">
     SELECT * FROM BLOG
     WHERE 1=1
     <if test="state != null">
     and state = #{state}
     </if> 
    </select>

    但是这种做法有一个最大的弊端,就是导致数据表上的索引失效,如果有索引的话。而且还是一个垃圾条件

    所以正确的做法应该是:

    使用<where>标签 解决这个问题

    where标签会自动处理第一个为null时候的and问题

    <select
                id="findUiImage4Map"
                parameterType="com.pisen.cloud.luna.ms.ten.ui.config.base.domain.UiImage"
                resultType="java.util.HashMap">
    
            select
              uid,
              imgUrl
            from
            ui_image uii
            <where>
                <if test="imgType != null and imgType != '' ">
                    AND
                    uii.img_type = #{imgType}
                </if>
    
                <if test="uploadDate != null and uploadDate != '' ">
                    AND
                    DATE_FORMAT(uii.upload_date,'%Y-%m-%d') = DATE_FORMAT(#{uploadDate},'%Y-%m-%d')
                </if>
    
            </where>
    
        </select>

    转载于:https://www.cnblogs.com/sxdcgaq8080/p/9412167.html

  • 相关阅读:
    不规则的组合方向键或功能键
    jQuery总结
    jQuery 学习
    jquery
    Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转
    linux 内核升级 网址参考
    SSDT&Shadow Hook的实现,完整代码。可编译
    linux信号机制
    linux 内核资料
    PostgreSQL SystemTap on Linux 转
  • 原文地址:https://www.cnblogs.com/telwanggs/p/13048630.html
Copyright © 2011-2022 走看看