• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mybatis中#{}和${}有什么区别

Mybatis中#{}和${}有什么区别

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Mybatis,区别等相关知识,希望本文的分享对您有所帮助
前几天去一家公司笔试,有一道题是“Mybatis中#{}和${}的区别?”。说实话,当时自己真的不是很清楚,因为我本人没有怎么学习过mybatis,虽然最近做的项目用的是mybatis,但也只涉及到最基本的增、删、改、查,多表之间的关联也几乎没有用到。而#{}只在mapper映射文件中用到,${}在JS和前端JSP页面中用到。后来上网查了一下发现,二者之间的区别还是很大的,现在把自己查到的资料归纳总结如下,便于大家讨论学习。

一般说来,二者的区别可总结为以下6点:

(1)#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111",如果传入的值是id,则解析成的sql为order by "id"。

(2)$将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id。

(3)#方式在很大程度上能够防止sql注入。

(4)$方式无法防止sql注入。

(5)$方式一般用于传入数据库对象,例如传入表名。

(6)一般能用#的就别用$。

ps:在使用mybatis中还遇到<![CDATA[]]>的用法,在该符号内的语句,将不会被当成字符串来处理,而是直接当成sql语句,比如要执行一个存储过程。

实例讲解:

动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。

在下面的语句中,如果 name 的值为 zhangsan,则两种方式无任何区别:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 获取缺失主键表信息的MYSQL语句
  • MyBatis的逆向工程的解析及简单教程(附代码)
  • SQL 正则表达式及mybatis中使用正则表达式
  • mybatis属性详解
  • mybatis分页插件pageHelper实例详解
  • Oracle结合Mybatis实现取表的10条数据
  • MyBatis如何实现Mysql数据库分库分表的实例详解
  • 关于spring集成mybatis如何实现mysql数据库读写分离的实例分析
  • Mybatis中#{}和${}有什么区别
  • 通过Mybatis调用MySQL存储过程的实例详解

相关文章

  • 2017-05-11phpmyadmin 4+ 访问慢的解决方法
  • 2018-12-05按日期选择最晚日期与最早日期对应的数的差值
  • 2018-12-05关于linux如何实现mysql数据库每天自动备份与定时备份的示例详解
  • 2018-12-05mysql字符集乱码问题解决方法介绍
  • 2018-12-05Oracle 9i 数据库异常关闭后的启动
  • 2018-12-05MySQL在Linux centos7环境下安装教程详解(图)
  • 2018-12-05SQL Server 2008存储结构之GAM、SGAM介绍
  • 2018-12-05MySQL 运维笔记(一) 终止高负载SQL
  • 2018-12-05加快mydumper与myloader导出导入
  • 2018-12-05ubuntu linux下使用Qt连接MySQL数据库的方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 解析MySQL创建外键关联错误 - errno:150
    • Mysql 数字类型转换函数
    • MySQL如何导入csv格式数据文件解决方案
    • ORACLE数据库查看执行计划的方法
    • mysql备份还原库命令方法解析(长文)
    • Mysql表的七种类型详细介绍
    • 详解MySQL中ALTER命令的使用
    • MySQL服务器的启动和关闭
    • PHP中操作MySQL数据库的注意事项
    • SQL语言查询基础:连接查询 联合查询 代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有