ibatis常用16条SQL语句
(1) 输入参数为单个值
?
? (4) 输入参数中含有数组
???
?? 说明:actionIds为传入的数组的名字;?
???使用dynamic标签避免数组为空时导致sql语句语法出错;
?? 使用isNotNull标签避免数组为null时ibatis解析出错?
?? (5)传递参数只含有一个数组?
????? 说明:注意select的标签中没有parameterClass一项
?????? 另:这里也可以把数组放进一个hashMap中,但增加额外开销,不建议使用?
?? (6)让ibatis把参数直接解析成字符串?
??? ? 注意:sql标签只能用于被引用,不能当作mapped statement。如上例中有名为selectBasicSql的sql元素,试图使用其作为sql语句执行是错误的:
??? sqlMapClient.queryForList(“selectBasicSql”); ×(10)随机选取记录
?? 使用resultMap称为显式结果映射,与之对应的是resultClass(内联结果映射),使用resultClass的最大好处便是简单、方便,不需显示指定结果,由iBATIS根据反射来确定自行决定。而resultMap则可以通过指定jdbcType和javaType,提供更严格的配置认证。
(14) typeAlias?
(15) remap
?? 此例中,根据参数tag值的不同,会获得不同的结果集,如果没有remapResults="true"属性,iBatis会将第一次查询时的结果集缓存,下次再执行时(必须还是该进程中)不会再执行结果集映射,而是会使用缓存的结果集。
因此,如果上面的例子中remapResult为默认的false属性,而有一段程序这样书写:???
此例中,dynamic标签中含有两个子标签<isNotNull>和<isNotEmpty>。根据前面叙述的原则,如果<isNotNull>标签中没有prepend="BOGUS" 这一假的属性来让dynamic去掉的话,<isNotEmpty>标签中的and就会被忽略,会造成sql语法错误。
?? 注意:当dynamic标签没有prepend属性时,不会自动忽略其子标签的第一个prepend属性。?
?
?
?
?
??
#actionIds[]#
</iterate>
</isNotNull>
</dynamic>
</insert>
你这个例子只是把actionIds中所有questionId 对应的status改为同一个值,如果需要把每个questionId 对应的status改为不同值呢,有什么好的解决方式吗,特别是一次需要修改千条以上数据???