首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ibatis iterate用法跟ibatis 一对多查询

2013-11-25 
ibatis iterate用法和ibatis 一对多查询select * from table where a initerate? open( close) con

ibatis iterate用法和ibatis 一对多查询

select * from table where a in

<iterate? open="(" close=")" conjunction=",">??
????? #idList[]#
??</iterate>??

时一直报错,找了很长时间,看到一篇文章才知道原来参数是list 在iterate里面不能加property,去掉property就正常了。

////////////////////////////////////////////////////////////////////////

</iterate>
<!-- 批量删除对象的时候,iterate不要property属性 -->
<delete id="delStudybook" parameteropen="(" close=")">
#bookList[]#

</iterate>
</delete>
注意要property的错误
Caused by: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out of range: -1
//另外:如果parameterparameterconjunction="," open="(" close=")">
#list[]#
</iterate>
</update>

注意不要property属性的错误
Cause: com.ibatis.sqlmap.client.SqlMapException: ParameterObject or property was not a Collection, Array or Iterator.
===============================
<!-- Iterate的使用,根据多个匹配条件查询,类似in(a,b,c)-->

<select id="selectByIterate" parameterresultopen="(" close=")">
#ids[]#
</iterate>
</select>
注意:不要property属性,否则报错。String index out of range: -1
2. 但是,若参数有多个传入的一个是List,另一个不是, parameterClass为map时,需要property属性区分要遍历的 集合。

?

/////ibtais一对多查询用法,和一对多插入方法

<result property="siteId" column="site_id" />
</resultMap>

<resultMap id="picVoteMap" extends="voteMap" >
<result property="picOptions" column="vote_id" select="getVotePicOptionByVoteId" />
</resultMap>

<select id="getVotePicOptionByVoteId" parameterresultMap="votePicOptionMap" >
select *
from OBS.FACE_EXT_VOTE_PIC_OPTION where vote_id = #value#
</select>

<select id="getPicVoteById" parameterresultMap="picVoteMap" >
select *
from OBS.FACE_EXT_VOTE where vote_id = #value#
</select>

?用这种查询方式即可只调用getPicVoteById,就能将一对多对象进行查询操作。

一对多插入:

先插入主表,然后获取主表id,然后批量插入副表即可完成一对多的插入。

VALUES IDENTITY_VAL_LOCAL()
</selectKey>

?插入主表末尾插入这么一段就可返回插入主键。

热点排行