话不多说,直接上代码:
<select id="car_queryModel" parameterType="com.xxx.meeting.model.CarVO" resultType="java.util.Map">
SELECT
t1.NAME name,
t1.CARNUMBER carnumber,
t1.PRICE price,
t1.MODEL model
FROM
T_PM_CAR t1
left join COMMON_OPINION t2 ON t2.ID = t1.ID
left join TEST_PERSON t3 ON t3.ID = t1.ID
left join T_PM_USER t4 ON t4.NAME = t1.ID
<trim prefix="WHERE" prefixOverrides="AND|OR">
<if test = "firstNodeIds != null and firstNodeIds.size > 0 ">
t1.FLOW_STATE IN
<foreach item="item" index="index" collection="firstNodeIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test = "name != null and name != '' ">
and t1.NAME = #{name}
</if>
and t1.birthday > to_date('2014-10-02 00:00:00','yyyy-MM-dd HH24:mi:ss')
</trim>
ORDER BY
t1.NAME desc
NULLS LAST
</select>
这里使用了
<trim prefix="WHERE" prefixOverrides="AND|OR">
...
</trim>
它的意思就是: 当WHERE后紧随AND或则OR的时候,就去除AND或者OR。
这里是通用的处理很多地方都可以直接用。