在Mybatis的配置文件当中,如果要用到循环便利需要注意:
org.apache.ibatis.binding.BindingException: Parameter 'ids' not found. Available parameters are [array]
以上错误信息就是没有将<foreach>标签中的collection明确指定,
如果传入的是数组那么应该是array
如果是集合那么就是:list
如果出现如下错误:
SQL: update Invitation set title=?, summary=?, author=?,
suffixOverrides=","加上这个标签,表示去掉最后一个,号
Map映射
resultMap="map1" 如果结果是一个resultMap,在<selete>标签中一定要用resultMap
一对多问题
在一对多时候使用<collection>标签,必须使用ofType,里面指定对象类型<collection property="replyDetails" ofType="ReplyDetail">
在多表联查的过程中如果两个表的字段名称相同,需要查询起别名,
然后在column属性中,指定别名名称
示例:
<resultMap type="Invitation" id="map1">
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="summary" column="summary"/>
<result property="author" column="author"/>
<result property="createdate" column="createdate"/>
<collection property="replyDetails" ofType="ReplyDetail">
<result property="id" column="rid"/>
<result property="content" column="rcontent"/>
<result property="author" column="rauthor"/>
<result property="invid" column="rinvid"/>
<result property="createdate" column="rcreatedate"/>
</collection>
</resultMap>
<select id="find" resultMap="map1">
select t1.id,t1.title,t1.summary,t1.author,t1.createdate,
t2.id rid,t2.content rcontent,t2.author rauthor,t2.invid rinvid,t2.createdate rcreatedate
from Invitation t1 left join Reply_Detail t2 on t1.id = t2.invid
</select>