Mybatis 处理集合 特殊符号
2015-12-25 10:46
369 查看
Mybatis 处理集合 特殊符号
在Mybatis的xml配置中使用集合,主要是用到了foreach动态语句。foreach的参数:
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名.
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置.
open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符.
close表示以什么结束。
Mybatis生成delete from table where id in(1,2,…,n)语句的查询
我们一般的做法是在方法的参数处指定传入的参数名称,在xml中使用的时候,集合的名称要和方法的Param的名称一致,这样便于阅读和理解,然后是在对应的xml文件中使用foreach循环。
java代码如下:
Integer updateRecommProduct(@Param("recommId") String recommId, @Param("goodsCodes") String[] goodsCodes);
对应的xml代码如下:
<update id="deleteRecommProduct" parameterType="String"> update t_prefecture_goods_shop set status=2 where prefecture_id=#{recommId} and goodscode in <foreach item="goodsCode" index="index" collection="goodsCodes" open="(" separator="," close=")"> #{goodsCode} </foreach> </update>
以上方法Mybatis会帮我们进行sql注入拦截,Mybatis如果采用#{xxx}的形式设置参数,Mybatis会进行sql注入的过滤。如果采用的是${xxx},Mybatis不会进行sql注入过滤,而是直接将参入的内容输出为sql语句。
大于号(>)小于号(<)的处理
错误示例select * from test where id>=10 and id<=20
这里会抛出
Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 74; columnNumber: 17; 元素内容必须由格式正确的字符数据或标记组成。
正确的应该是
select * from test where id>=10 and id<=20
这是因为Mybatis 对特殊字符做了转义处理。所以在使用的时候,也应该注意特殊字符要提前转义。
以下是对照表
转义代码 | 符号 | 符号名称 |
---|---|---|
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ’ | 单引号 |
" | “ | 双引号 |
相关文章推荐
- eclipse 中全局替换
- Android Stduio统计项目的代码行数
- Codeforces Round #336 (Div. 2)A. Saitama Destroys Hotel 水题
- 横向滚动的UITableView
- Hibernate配置文件中hiberante.hbm2ddl.auto四个参数的配置
- 全文检索引擎Solr系列—–全文检索基本原理
- spring 事务没有回滚与mysql数据库引擎
- 条件选择结构<2>__笔记(4)
- [IOS]拉伸图片 保持部分不变形
- ORA-29857: domain indexes and/or secondary objects
- mysql分区表设计(一)
- HTML 的语法
- eclipse反向生成实体类的方法
- org.apache.jasper.JasperException
- mycat的一些基本概念+解决跨库join操作
- CI框架调用第三方类库
- css控制Button 按钮的点击时候出现蓝色边框
- 《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式
- css控制Button 按钮的点击时候出现蓝色边框
- mysql 免安装版密码操作