`
足至迹留
  • 浏览: 495888 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

备忘: $与#, <![cdata[ ]]>

 
阅读更多
1. $ 与 #
在ibatis/MyBatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行预编译,进行类型匹配,而$不进行数据类型匹配,直接当做字符串拼接,所以要注意sql注入风险。

$ 的作用实际上是字符串拼接,
select * from $tableName$
等效于
StringBuffer sb = new StringBuffer(256);
sb.append("select * from ").append(tableName);
sb.toString();

#用于变量替换
select * from table where id = #id#
等效于
prepareStement = stmt.createPrepareStement("select * from table where id = ?")
prepareStement.setString(1,'abc');

对于变量部分, 应当使用#, 这样可以有效的防止sql注入, 未来,# 都是用到了prepareStement,这样对效率也有一定的提升;
$只是简单的字符拼接而已,对于非变量部分, 那只能使用$, 实际上, 在很多场合,$也是有很多实际意义的
例如:
select * from $tableName$ 对于不同的表执行统一的查询。

还可以参考: http://developer.51cto.com/art/200907/138063.htm


2. <![cdata[ ]]>
实际上这是xml的用法,因为mybatis中经常见到,所以也放在这里说明。
在xml中'<'和'&'是特殊字符,需要特殊处理,包含在<![cdata[ ]]>中即可。
分享到:
评论

相关推荐

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    实例如下:&lt;select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1"&gt; &lt;![CDATA[ SELECT newsEdit,newsId, newstitle FROM shoppingGuide WHERE 1=1 AND newsday &gt; #{startTime} AND ...

    asp微信开发者回复代码

    [CDATA["&fromusername&"]]&gt;&lt;/ToUserName&gt;" &_ "&lt;FromUserName&gt;&lt;![CDATA["&tousername&"]]&gt;&lt;/FromUserName&gt;" &_ "&lt;CreateTime&gt;"&now&"&lt;/CreateTime&gt;" &_ "&lt;MsgType&gt;news&lt;/MsgType&gt;" &_ "&lt;ArticleCount&gt;3&lt;/...

    微信小程序支付(已调试通过).rar

    微信小程序支付JSAPI交易类型 已通过测试 返回例子如下: &lt;xml&gt;&lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;return_msg&gt;&lt;![CDATA[OK]]&gt;&lt;/return_msg&gt; &lt;result_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/result_code&gt;

    省市区表,xml省市区

    自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为&lt;!DOCTYPE PCAroot[ &lt;!ELEMENT PCAroot (Province*)&gt; &lt;!ELEMENT Province (City*)&gt; &lt;!ELEMENT City (Area*)&gt; &lt;!ELEMENT Area (#PCDATA)&gt; &lt;!...

    微信时间开发源码

    [CDATA[%s]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;%s&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[%s]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[%s]]&gt;&lt;/Content&gt; &lt;FuncFlag&gt;0&lt;/FuncFlag&gt; &lt;/xml...

    微信开发文档

    [CDATA[toUser]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[fromUser]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;1348831860&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[this is a test]]&gt;&lt;/...

    一个简单的xml文件

    ATTLIST 电话 类别 CDATA "移动电话"&gt; ]&gt; &lt;联系人列表&gt; &lt;说明&gt;&content;&lt;/说明&gt; &lt;联系人&gt; &lt;姓名&gt;刘保文&lt;/姓名&gt; &lt;ID&gt;201003101115&lt;/ID&gt; &lt;公司&gt;腾飞汇通有限公司&lt;/公司&gt; &lt;电话 类别="移动电话"&gt;18993380967&lt;/...

    XML一些练习题

    &lt;价格 货币类型="日元" 货币单位="元"&gt;12000&lt;/价格&gt; &lt;图片 source="LOVE YOU.gif"/&gt; &lt;/笔记本电脑&gt; &lt;/产品目录&gt; ``` 2. 针对 XML 文件编写 CSS 在这个练习题中,我们需要编写 CSS 使得三个“Student”标记中的...

    JQuery选择器

    JQuery选择器 几个小练习 ... &lt;select&gt;&lt;option&gt;Option&lt;/option&gt;&lt;/select&gt;&lt;br/&gt; &lt;textarea rows="5" cols="20"&gt;&lt;/textarea&gt;&lt;br/&gt; &lt;button&gt;Button&lt;/button&gt;&lt;br/&gt; &lt;/form&gt; &lt;div&gt;&lt;/div&gt; &lt;/body&gt; &lt;/html&gt;

    上传xml文档

    &lt;preconditions&gt;&lt;![CDATA[1.使用udp_bi用户在PLSQL正常登陆UAT数据库&lt;br&gt; (UAT数据库IP: 10.0.13.178)&lt;br&gt; 2.数据库脚本已下载至本地环境]]&gt;&lt;/preconditions&gt;&lt;importance&gt;&lt;![CDATA[2]]&gt;&lt;/importance&gt;&lt;steps&gt; &lt;step&gt;

    JAVA对象转换成XML(CDATA)

    [CDATA[ 文本内容 ]]&gt;`,其中"文本内容"部分不能包含字符串"]]&gt;",以防止提前结束CDATA段。同时,CDATA段不能嵌套,也就是说,一个CDATA段内部不能再有另一个CDATA段。 要将Java对象转换成XML并包含CDATA,我们可以...

    出租屋信息管理系统二期接口文档.doc

    PDAInterfaceXML接口返回值为XML格式,结构与参数类似,不同的请求具有不同的子节点:&lt;CDATA&gt;&lt;param1 description=” 此节点说明”&gt;XXX&lt;/param1&gt;&lt;param2 description=” 此节点说明”&gt;XXX&lt;/param2&gt;&lt;/CDATA&gt; ...

    Mobile Atlas Creator.exe

    [CDATA[http://t{$serverpart}.tianditu.cn/DataServer?T=cia_w&X={$x}&Y={$y}&L={$z}]]&gt;&lt;/url&gt; &lt;serverParts&gt;0 1 2 3 5 6 7&lt;/serverParts&gt; &lt;backgroundColor&gt;#00000000&lt;/backgroundColor&gt; &lt;/customMapSource&gt; &lt;/...

    XML 技术概述文档

    [CDATA[This is some arbitrary text &lt;within&gt; a CDATA!]]&gt; ``` 元素可以有属性,属性用来提供额外的信息。例如: ```xml &lt;article title="A Tutorial on XML 1.0"&gt; ``` 这里的 `title` 就是元素 `article` 的一个...

    DTD教程,来自3cSchool

    1. **元素(Elements)**:XML文档的核心组成部分,如`&lt;body&gt;`和`&lt;message&gt;`。元素可以包含文本、其他元素或为空。 2. **属性(Attributes)**:提供关于元素的附加信息,如`&lt;img src="computer.gif" /&gt;`中的`src`...

    XML的DTD教程

    **示例**:定义一个`&lt;note&gt;`元素,其包含`&lt;to&gt;`、`&lt;from&gt;`、`&lt;heading&gt;`和`&lt;body&gt;`四个子元素,其中`&lt;to&gt;`、`&lt;from&gt;`和`&lt;heading&gt;`元素仅包含文本数据,而`&lt;body&gt;`元素可以包含文本和子元素。 ```xml &lt;!ELEMENT note...

    chapter23 实践习题1

    ATTLIST course course_id ID #REQUIRED title CDATA #REQUIRED dept_name IDREF #REQUIRED credits CDATA #REQUIRED&gt; &lt;!ELEMENT instructor EMPTY&gt; &lt;!ATTLIST instructor IID ID #REQUIRED name CDATA #REQUIRED ...

    FLEX动态树 动态图表

    ### FLEX动态树与动态图表:深入理解及应用 在Adobe Flex框架中,`Tree`控件被广泛用于展示层次结构的数据,如目录、组织结构等。本文将深入解析如何在Flex中创建并自定义动态树,以及如何通过事件处理实现更高级的...

    第14讲 XML文件.ppt

    &lt;first_name&gt;Alan&lt;/first_name&gt; &lt;last_name&gt;Turing&lt;/last_name&gt; &lt;/name&gt; &lt;profession&gt;computer scientist&lt;/profession&gt; &lt;profession&gt;mathematician&lt;/profession&gt; &lt;profession&gt;cryptographer&lt;/profession&gt; &lt;/...

Global site tag (gtag.js) - Google Analytics