Mybatis整理

‘#’符号

SELECT * FROM PERSON WHERE ID = #{id} 

中的‘#{id}’符号,告诉 MyBatis 创建一个预处理语句参数,通过 JDBC,这样的一个参数在 SQL 中会由一个“?”来标识,并被传递到一个新的预处理语句中,就像这样:

// Similar JDBC code, NOT MyBatis…

String selectPerson="SELECT * FROM PERSON WHERE ID=?";

PreparedStatement ps=conn.prepareStatement(selectPerson);

ps.setInt(1, id);

默认情况下,使用#{}格式的语法会导致 MyBatis 创建预处理语句属性并安全地设置值(比如?)。这样做更安全,更迅速,通常也是首选做法,不过有时你只是想直接在 SQL 语句中插入一个不改变的字符串。比如,像 ORDER BY,你可以这样来使用:

ORDER BY ${columnName}

这里 MyBatis 不会修改或转义字符串。

注意:因为$格式的参数会直接参与编译,以这种方式接受从用户输出的内容并提供给语句中不变的字符串是不安全的,会导致潜在的 SQL 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。

CDATA

Mybatis中xml 文件中,查询是不能使用小于号(<)的,因为这属于开始标签,是特殊字符。

在查询中,使用CDATA包括起来,就能避免特殊字符了。这方法适用所有的特殊字符。

<![CDATA[   

]]>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,206评论 0 4
  • 官方文档 简介 入门 XML配置 XML映射文件 动态SQL Java API SQL语句构建器 日志 一、 JD...
    拾壹北阅读 8,863评论 0 52
  • 1 引言# 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybait...
    七寸知架构阅读 76,909评论 36 979
  • 前言 本篇将完成DAO层的设计与开发,包括: 数据库、DAO实体与接口设计与编码 基于MyBatis实现DAO编程...
    MOVE1925阅读 5,216评论 0 4
  • 我,虽叫“渣”,但真的不渣,说起这个渣名,它还有一段故事,今天暂且不提。我热爱生活、爱旅游、爱画画,还是一个特爱吃...
    小渣老师阅读 5,036评论 0 4

友情链接更多精彩内容