关于ibatis的动态sqlMap问题

uynix 2005-11-03 08:42:22
<iterate property="searchValueList" open="(" close=")" conjunction="$searchValueList[].andOr$">$searchValueList[].column$$searchValueList[].operator$#searchValueList[].value# </iterate>

请问conjunction后的值可否如上用动态的??
如果不可以的话,我想实现list元素之间的动态and/or连接该怎么实现呢??
...全文
868 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
uynix 2005-11-30
  • 打赏
  • 举报
回复
多谢楼上的回帖,但是好像是有点答非所问呀!!!
我想问的问题简单说就是iterate标签conjunction属性的值可不可以传递动态值
或是这种需求有什么变通的解决方法没有??
fbtdjs 2005-11-30
  • 打赏
  • 举报
回复
学习……
悠云guo 2005-11-30
  • 打赏
  • 举报
回复
Iterate:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。
Iterate的属性:
prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property - 类型为java.util.List的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)
iterate> 遍历类型为java.util.List的元素。
例子:
<iterate prepend=”AND” property=”userNameList”
open=”(” close=”)” conjunction=”OR”>
username=#userNameList[]#
</iterate>
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String。

摘自:《iBATIS SQL Maps开发指南》
Clinton Begin 著
刘涛译
figoren 2005-11-27
  • 打赏
  • 举报
回复
sqlMap namespace="priTeamData">
<typeAlias alias="priTeamData" type="privilege.bo.PRITeamData" />
结果类型 是一个javabean

<resultMap id="get-priTeamData" class="priTeamData">
<result property="oid" column="OID" />
<result property="teamName" column="TEAM_NAME" />
<result property="teamDesc" column="DESCRIPTION" />
<result property="type" column="TYPE" />
<result property="orgID" column="ORG_ID" />
<result property="createdBy" column="CREATED_BY" />
<result property="createdDate" column="CREATED_DATE" />
</resultMap>
通过id找一条纪录封装到指定对象中
<select id="findTeam" resultMap="get-priTeamData">
<![CDATA[
select
OID,
TEAM_NAME,
DESCRIPTION,
TYPE,
ORG_ID,
CREATED_BY,
CREATED_DATE
from COM.PRI_TEAM where OID=#oid# and ENABLE_FLAG='T'
]]>
</select>
动态找纪录集封装到列表
<select id="findTeamList" resultMap="get-priTeamData">
<![CDATA[
select
OID,
TEAM_NAME,
DESCRIPTION,
TYPE,
ORG_ID,
CREATED_BY,
CREATED_DATE
from COM.PRI_TEAM ]]>
动态加条件 如果oid〉0 则
<dynamic prepend="where">
<isGreaterThan prepend="" property="oid" compareValue="0">OID=#oid#</isGreaterThan>
<isGreaterThan prepend="" property="oid" compareValue="0">and</isGreaterThan>
ENABLE_FLAG='T'
</dynamic>
order by oid desc
</select>


添加操作
<insert id="insertTeam" parameterClass="priTeamData">
通过selectKey来动态生成oid sequence
<selectKey resultClass="int" keyProperty="oid">
select nextval for COM.PRI_TEAM_S from SYSIBM.SYSSEQUENCES where SEQSCHEMA = 'COM'
and SEQNAME = 'PRI_TEAM_S'
、 </selectKey>
INSERT INTO COM.PRI_TEAM( OID,ORG_ID,CREATED_BY,CREATED_DATE,LAST_UPDATED_BY,LAST_UPDATED_DATE,ENABLE_FLAG
动态添加属性值
<dynamic prepend="">
<isNotEmpty prepend="," property="teamName">TEAM_NAME</isNotEmpty>
<isNotEmpty prepend="," property="teamDesc">DESCRIPTION</isNotEmpty>
<isNotEmpty prepend="," property="type">TYPE</isNotEmpty>
</dynamic>
) VALUES( #oid#,#orgID#,#createdBy#,#createdDate#,#lastUpdatedBy#,#lastUpdatedDate#,#enableFlag#
<dynamic prepend="">
<isNotEmpty prepend="," property="teamName">#teamName#</isNotEmpty>
<isNotEmpty prepend="," property="teamDesc">#teamDesc#</isNotEmpty>
<isNotEmpty prepend="," property="type">#type#</isNotEmpty>
</dynamic>
)
</insert>

更新操作
<update id="updateTeam" parameterClass="priTeamData">
UPDATE COM.PRI_TEAM SET ORG_ID=#orgID#,LAST_UPDATED_BY=#lastUpdatedBy#,LAST_UPDATED_DATE=#lastUpdatedDate#,ENABLE_FLAG=#enableFlag#
<dynamic prepend="">
<isNotEmpty prepend="," property="teamName">TEAM_NAME=#teamName#</isNotEmpty>
<isNotEmpty prepend="," property="teamDesc">DESCRIPTION=#teamDesc#</isNotEmpty>
<isNotEmpty prepend="," property="type">TYPE=#type#</isNotEmpty>
</dynamic>
WHERE OID=#oid#
</update>
</sqlMap>

模糊查询
<select id="getFndTitleListByName" parameterClass="java.lang.String" resultMap="get-TitleData">
<![CDATA[
select
TITLE_ID,
TITLE_NAME,
TITLE_DESC,
ENABLED_FLAG,
TITLE_LEVEL,
MEMO
from COM.FND_TITLE
where TITLE_NAME like '%'||#titleName#||'%'

]]>
</select>
动态比较 如果属性的值不等于All则...
<isNotEqual prepend="AND" property="titleIds" compareValue="All">
a.AUTH_TITLE_ID in ($titleIds$)
</isNotEqual>


resultMap 不能为空的处理
<resultMap id="get-AuthorityData" class="AuthorityData">
<result property="authId" column="AUTH_ID" nullValue="0"/>
<result property="employeeId" column="EMPLOYEE_ID" nullValue="0"/>
<result property="authDeptId" column="AUTH_DEPT_ID" nullValue="0"/>
<result property="authTitleId" column="AUTH_TITLE_ID" nullValue="0"/>
<result property="createBy" column="CREATE_BY" nullValue="0"/>
<result property="manageDeptId" column="MANAGE_DEPT_ID" nullValue="0"/>
<result property="createDate" column="CREATE_DATE" />
</resultMap>

普通参数的更新与删除
一个参数
<update id="update_com" parameterClass="java.lang.Integer">
update com.emplyees set enable_flag='F' where emplyee_id in (#emplyeeId#);
</update>
多个参数 map中放参数与参数值
<update id="update_irm" parameterClass="java.util.Map">
update COM.IRM_EPIBOLY_EMPLOYEE set status=#newSataus# where employee_id = #emplyeeId#;
</update>
删除
<delete id="delete" parameterClass="java.lang.Integer">
delete from COM.IRM_EPIBOLY_EMPLOYEE where employee_id = #emplyeeId#;
</delete>
插入数据
<insert id="insert" parameterClass="ProductMemberData">
<selectKey resultClass="int" keyProperty="oid">select nextval for COM.PRODUCT_MEMBER_S from SYSIBM.SYSSEQUENCES where SEQSCHEMA = 'COM' and SEQNAME = 'PRODUCT_MEMBER_S'</selectKey>
INSERT INTO COM.FND_PRODUCT_MEMBER( OID,PRODUCT_ID,ROLE_ID,EMPLOYEE_ID) VALUES(#oid#,#productId#,#roleId#,#employeeId#)
</insert>

case when
<select id="findNewEmployeeList" resultMap="get-COM_EmplyeeData-list">
<![CDATA[
Select A.DEPT_Id,
case when A.DUTY is null then '' else A.DUTY end as DUTY,
A.EMAIL ,
A.EMPLYEE_ID ,
A.EMPLOYEE_NO ,
A.EMPLOYEE_NAME,
A.EMPLOYEE_TYPE,
A.ENABLE_FLAG ,
A.ORGANIZATION_ID ,
A.TEL_NO1 ,
A.TEL_NO2
from com.com_EMPLYEES as A
where ENABLE_FLAG='T' AND A.EMPLYEE_ID not in(
Select B.EMPLOYEE_ID from
COM.FND_EMPLOYEE as B ORDER BY B.EMPLOYEE_ID
)
ORDER BY A.EMPLYEE_ID
]]>
</select>
panpan221 2005-11-07
  • 打赏
  • 举报
回复
没使用过,学习,以前都用hibernate

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧