(1)
<select id="selectClassByID" resultMap="ClassesResultMap" parameterType="int">
select cid,cname,sid,sname from class left join student on cid=s_cid
<trim prefix="where" prefixOverrides="and|or">
<if test="id != null">and cid=#{id}</if>
</trim>
</select>
报错:无法找到id这个参数
解决办法:1、传入map,键为id,即可找到id;
2、在接口的方法加入注解 public Classes selectClassByID(@Param(“id”) int cid)
此处”id”是sql语句的id这个参数
(2)trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)
<trim prefix="where" prefixOverrides="and|or"></trim>
解释:在trim中,若开头是“and|or”,则用”where”替换”and|or”
<trim prefix="(" suffix=")" suffixOverrides=","></trim>`
解释:在trim中,若结尾是“,”,则用”)”替换”,”
(3)
foreach(在实现 mybatis in 语句查询时特别有用)
open:foreach代码的开始符号
close:foreach代码的关闭符号
separator:元素之间的分隔符
index:下标
item:循环体中的具体对象
1、传入参数为数组(集合)类型
<foreach item="item_para" collection="array(list)" index="index" open="" separator="" close="">#{item_para}</foreach>
2、传入参数为map类型,键为“usertds”,值为一个集合,所以collection为”userids” item为userids中的值
map.put("userids",list);
<foreach item="item_para" collection="userids" index="index" open="" separator="" close="">#{item_para}</foreach>
collection里只能放三种,1、array;2、list;3、自定义的Map里的键
当collection里是数组或者集合(若Map里放的也是数组或集合,同样的做法),index是下标数字;
当collection里是Map(即自定义的Map里存放的还是Map),index是collection里Map的键