首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

ibatis惯用16条SQL语句

2012-09-07 
ibatis常用16条SQL语句(1) 输入参数为单个值 ?? (4) 输入参数中含有数组??? ?? 说明:actionIds为传入的数

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改为不同值呢,有什么好的解决方式吗,特别是一次需要修改千条以上数据???

热点排行