求mybatis高手 如下:当任意条件为空 那SQL语句就会变成 where and 加条件,故报错,求解决方案动态拼接

<iftest="_parameter!=null">where<iftest="mechanismCode!=null">m.mechanism_code=#{mech... <if test="_parameter != null" >
where
<if test="mechanismCode != null" >
m.mechanism_code=#{mechanismCode}
</if>

<if test="levelId != null" >
and m.level_id=#{levelId}
</if>

<if test="provinceId != null" >
and m.province_id=#{provinceId}
</if>
<if test="cityId != null" >
and m.city_id=#{cityId}
</if>
<if test="status != null" >
and m.status=#{status}
</if>
</if>
展开
 我来答
魔幻IT
推荐于2017-12-04
知道答主
回答量:21
采纳率:0%
帮助的人:10.1万
展开全部
我是这样解决的:select userName from users where userId > 0 and 别的条件。如果你要通用的,也可以在这样写:
select userName from ysers where 1=1 and 条件
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浅黄却百里1
2013-08-22 · TA获得超过504个赞
知道小有建树答主
回答量:482
采纳率:0%
帮助的人:257万
展开全部
根本不是这么写的啊。。。。mybatis这个建议你去看看教程。
<isNotEmpty prepend="AND" property="year_id1">
<![CDATA[ (substr(year_id,0,4) <= #year_id1# ) ]]>
</isNotEmpty>
正常的格式是用这个自带的isNotEmpty来进行判断的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做个有用的人66
推荐于2017-08-05
知道答主
回答量:1
采纳率:0%
帮助的人:971
展开全部
<!-- 查询条件 -->
<sql id="Example_Where_Clause">
<trim prefix="where" prefixOverrides="and|or">
<if test="id != null">
AND t1.id = #{id}
</if>

用trim 去除 前缀第一个and 或者or
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ee58893
2017-12-04
知道答主
回答量:2
采纳率:0%
帮助的人:1822
展开全部

用<where>标签把你的if全部包起来,把and写到if的判断里,就不会报and的sql语句错误了。我发你个博客,你去看下。网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lei3844
2013-08-22 · TA获得超过1432个赞
知道小有建树答主
回答量:389
采纳率:66%
帮助的人:220万
展开全部
格式是这样,每一个if格式都是这样,由于手机手打,就不写全了         <if test="mechanismCode ">
Where mechanismCode is not null and m.mechanism_code=#{mechanismCode}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式