MyBatis——案例——查询-多条件查询-动态条件查询(关键字 if where)

风陵南·2022-09-26 00:12·86 次阅读

MyBatis——案例——查询-多条件查询-动态条件查询(关键字 if where)

动态条件查询

  SQL语句会随着用户的输入或外部条件的变化而变化,我们称为 动态SQL

 

  MyBatis 对动态SQL有很强大的支撑:

  if

  choose(when,otherwise)

  trim

  foreach

 

  将之前的多条件查询改进(之前不能搜索到空字符串以及null)

  新增 if 判断(当其中内容满足时才将判断条件加入SQL语句中)

<!-- 动态条件查询 -->
<select id="selectByCondition" resultMap="brandResultMap">
select
*
from
tb_brand
where
<if test="status != null">
status = #{status}
</if>
<if test="companyName != null and companyName != ''">
and company_name like #{companyName}
</if>
<if test="brand_name != null and brand_name != ''">
and brand_name like #{brand_name}
</if>
</select>

  存在问题,当 status 为 null 时,第一个sql语句判断条件不生效,而后面两个连接上之后存在 and 存在sql语法错误 会报错

  解决:

    使用 where 标签 替换 where 关键字,<where>标签会自动识别 and 是否在第一位,在第一位就会将其删除    

 

posted @   风陵南  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示