二、mybatis ${}与#{}的区别
简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from table where id=?
然而${} 则是不能防止SQL注入打印出来的语句 select * from table where id=2 ?实实在在的参数。
最简单的区别就是${}解析穿过来的参数值不带单引号,#{}解析传过来参数带单引号。
最后总结一下必须使用$引用参数的情况,那就是参数的int型的时候,必须使用$引用。
答案:
1. <if?test="search.dataforarray != null">?
and datefor in ;
2. <foreach item="item" index="index";
3. collection="search.dataforarray";
4. open="("separator="," close=")">#{item}</foreach>?
5. </if>。
循环体中的具体对象:支持属性的点路径访问,如item.age,item.info.details,具体说明:在list和数组中是其中的对象,在map中是value,collection,要做foreach的对象,作为入参时,list??>对象默认用list代替作为键,数组对象有array代替作为键,map对象没有默认的键。当然在作为入参时可以使用@param("keyname")来设置键,设置keyname后,list,array将会失效。
除了入参这种情况外,还有一种作为参数对象的某个字段的时候。