经常看到SQL语句中的where 1=1是什么意思?

介绍

这时我们的查询语句就是 select * from table where starttime =2015-04-05 and endtime = 2015-04-07,查询语句正确

但是如果条件都不满足的话,语句就变成了 select * from table where ,这时候查询就会报错。

当两个条件成立的时候 select * from table where 1=1 and starttime =2015-04-05 and endtime = 2015-04-07, 语句正确

当两个条件不满足时 select * from table where 1=1 ,语句正确,会返回table表的所有数据


mybatis中的使用

mybatis动态拼接条件的技巧 where 1=1 或者where标签

<select id="selectByStudentSelective" resultMap="BaseResultMap" parameterType="com.homejim.mybatis.entity.Student">

    select

    <include refid="Base_Column_List" />

    from student

    where 1=1

    <if test="name != null and name !=''">

      and name like concat('%', #{name}, '%')

    </if>

    <if test="sex != null">

      and sex=#{sex}

    </if>

  </select>

mybatis动态拼接条件的技巧:

技巧一:where 1=1  ,此时,就可以根据name,sex是否为空就可以查询了

技巧二:放在where标签里面

<select id="selectByStudentSelective" resultMap="BaseResultMap" parameterType="com.homejim.mybatis.entity.Student">

    select

    <include refid="Base_Column_List" />

    from student

< where>

    <if test="name != null and name !=''">

      and name like concat('%', #{name}, '%')

    </if>

    <if test="sex != null">

      and sex=#{sex}

    </if>

</where>

  </select>


引用

参考1

参考2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。