Mybatis--动态SQL(if,where,trim)
2022-07-30 本文已影响0人
何以解君愁
Mybatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的功能,作用是为了解决拼接SQL语句字符串的痛点问题
if标签:根据标签中test属性对应的表达式决定标签中的内容是否需要拼接到SQL中
where标签:当where标签中有内容时,会自动生成where关键字,并且将内容前(内容后的不行)多余的and或or去掉,当无内容时不起作用
<select id="selectByPageAndCondition" resultMap="brandResultMap">
select *
from tb_brand
<where>
<if test="brand.brandName != null and brand.brandName != ''">
and brand_name like #{brand.brandName}
</if>
<if test="brand.companyName != null and brand.companyName != ''">
and company_name like #{brand.companyName}
</if>
<if test="brand.status != null">
and status = #{brand.status}
</if>
</where>
limit #{begin},#{size}
</select>
trim标签(无内容时不起作用):
prefix|suffix:在trim标签内容前面或后面添加指定内容;
prefixOverrides|suffixOverrides:在trim标签内容前面或后面删除指定内容
<select id="getEmpBycondition" resultType="Emp">
select*from t_emp
<trim prefix=where suffixoverrides="and|or">
<if test="empName != null and empName != ''">
emp_name =#{ empName} and
</if>
<if test="age != null and age != ''">
age = #{ age} or
</if>
</trim>
</select>