<select id="selectByCondition" resultMap="brandResultMap">
select
*
from tb_brand
<where>--where 里面的sql语句加上and不会出现编译报错。
<!-- 比如这里 放一条 <if test="status!=null"> and status = #{status} </if> 如果status为空,那么会-->
<!-- 执行and status = #{status} ,但是and会出现语法错误,这里where 就是起一个sql注入的作用避免报错,-->
<!-- 原理:where 1=1 and status = #{status}-->
-- 那么有人就说直接去掉and不行吗? 答案是当然不行。and去掉,如果有多条语句需要同时执行,也会出现语法错误
-- status = #{status} status = #{status} brand_name like #{brandName};同时执行又需要and连接,这是相互矛盾的
<if test="status!=null">-- if进行条件判断 属于动态sql 可以选择是否执行sql语句
and status = #{status}
</if>
<if test="companyName!=null and companyName!='' ">
and status = #{status}
</if>
<if test="brandName!=null and brandName!='' ">
and brand_name like #{brandName};</if>
</where>
</select>
mybatis 动态sql查询
最新推荐文章于 2024-09-01 15:12:06 发布