使用<where>以及where 1=1可以避免出现and,or直接与where相连
select * from xxx where and SQL1;
应该为
select * from xxx where SQL1;
比如select * from xxx where and xx==x;
当where 1=1
---->select * from xxx where 1=1 and xx==x;
或者<where>
---->select * from xxx where xx==x;
现用<trim>替换
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.xxx.xxxMapper">
<select id="findCustomerByNameAndJobs"
parameterType="com.xxx.xxx.xxx"
resultType="com.xxx.xxx.xxx">
select * from xxx
<trim prefix="where" prefixOverrides="and">
<if test="xx !=null and xx !='' ">
and SQL1
</if>
</trim>
</select>
</mapper>
若 <if test="xx !=null and xx !='' ">成立,则最终SQL为
select * from xxx where SQL1;
在<trim>中的属性prefix会句首加上where,prefixoverrides会句首去除and SQL1句首的and。
trim四个属性prefix,prefixOverrides,suffix,suffixOverrides,
trim:修剪
fix:修
pre:前
suffix:后缀
override:撤销