ibatis 动态查询
如下语句:<isNotEmptyproperty="NAME"prepend="AND">A.NAME=#NAME#</isNotEmpty>若NAME不为空则执行A.N...
如下语句:
<isNotEmpty property="NAME" prepend="AND"> A.NAME=#NAME#</isNotEmpty>
若NAME不为空 则执行 A.NAME=#NAME#
请问这里的property可不可以有两个值
实现:若NAME1或NAME2不为空 则执行A.NAME=#NAME# 展开
<isNotEmpty property="NAME" prepend="AND"> A.NAME=#NAME#</isNotEmpty>
若NAME不为空 则执行 A.NAME=#NAME#
请问这里的property可不可以有两个值
实现:若NAME1或NAME2不为空 则执行A.NAME=#NAME# 展开
展开全部
<sql id="AgentUser.findPage.where">
<!-- ognl访问静态方法的表达式 为@class@method(args),以下为调用rapid中的Ognl.isNotEmpty()方法,还有其它方法如isNotBlank()可以使用,具体请查看Ognl类 -->
<where>
<if test="@Ognl@isNotEmpty(userId)">
AND USER_ID = #{userId}
</if>
<if test="@Ognl@isNotEmpty(userName)">
AND USER_NAME = #{userName}
</if>
<if test="@Ognl@isNotEmpty(userAccount)">
AND USER_ACCOUNT = #{userAccount}
</if>
<if test="@Ognl@isNotEmpty(userPasswd)">
AND USER_PASSWD = #{userPasswd}
</if>
<if test="@Ognl@isNotEmpty(userDept)">
AND USER_DEPT = #{userDept}
</if>
<if test="@Ognl@isNotEmpty(userCompany)">
AND USER_COMPANY = #{userCompany}
</if>
<if test="@Ognl@isNotEmpty(creator)">
AND CREATOR = #{creator}
</if>
<if test="@Ognl@isNotEmpty(createDateBegin)">
AND CREATE_DATE >= #{createDateBegin}
</if>
<if test="@Ognl@isNotEmpty(createDateEnd)">
AND CREATE_DATE <= #{createDateEnd}
</if>
<if test="@Ognl@isNotEmpty(agentUserId)">
AND AGENT_USER_ID = #{agentUserId}
</if>
</where>
</sql>
<!-- ognl访问静态方法的表达式 为@class@method(args),以下为调用rapid中的Ognl.isNotEmpty()方法,还有其它方法如isNotBlank()可以使用,具体请查看Ognl类 -->
<where>
<if test="@Ognl@isNotEmpty(userId)">
AND USER_ID = #{userId}
</if>
<if test="@Ognl@isNotEmpty(userName)">
AND USER_NAME = #{userName}
</if>
<if test="@Ognl@isNotEmpty(userAccount)">
AND USER_ACCOUNT = #{userAccount}
</if>
<if test="@Ognl@isNotEmpty(userPasswd)">
AND USER_PASSWD = #{userPasswd}
</if>
<if test="@Ognl@isNotEmpty(userDept)">
AND USER_DEPT = #{userDept}
</if>
<if test="@Ognl@isNotEmpty(userCompany)">
AND USER_COMPANY = #{userCompany}
</if>
<if test="@Ognl@isNotEmpty(creator)">
AND CREATOR = #{creator}
</if>
<if test="@Ognl@isNotEmpty(createDateBegin)">
AND CREATE_DATE >= #{createDateBegin}
</if>
<if test="@Ognl@isNotEmpty(createDateEnd)">
AND CREATE_DATE <= #{createDateEnd}
</if>
<if test="@Ognl@isNotEmpty(agentUserId)">
AND AGENT_USER_ID = #{agentUserId}
</if>
</where>
</sql>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
何必把简单的东西搞复杂化呢?简单有效的方法是最有用的。
比如你的问题,完全可以在传入参数NAME之前判断好NAME1和NAME2哪一个有值,把有值的那个封装在map里面穿进去就行了,放到sql语句里面做判断本身就不是什么好的写法,增加逻辑混乱性和后期维护极大的开销。
比如你的问题,完全可以在传入参数NAME之前判断好NAME1和NAME2哪一个有值,把有值的那个封装在map里面穿进去就行了,放到sql语句里面做判断本身就不是什么好的写法,增加逻辑混乱性和后期维护极大的开销。
追问
前台有两个查询条件 TJRQQ(统计日期起),TJRQZ(统计日期止)。
这两个值都需要传到后台。
只要其中一个不为空,在后台就需要
将sql
select * from a
改为
select * from a,b where a.id = b.id and b.tjrqq=#TJRQQ# b.tjrqz=#TJRQZ#
我现在的处理方法是,在前台强制,只要其中一个不为空,则另一个也不能为空。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<isNotEmpty prepend=" AND " property="NAME">
A.NAME = #NAME#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="NAME1">
A.NAME = #NAME1#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="NAME2">
A.NAME = #NAME2#
</isNotEmpty>
A.NAME = #NAME#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="NAME1">
A.NAME = #NAME1#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="NAME2">
A.NAME = #NAME2#
</isNotEmpty>
追问
这个办法我想过 但是由于表也是动态的 写成两句的话会报错
select * from A
B
WHERE A.ID=B.ID
A.NAME=#NAME#
大概就是这个意思
(字数限制 其它见评论)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询