mybatis中 #{key}和${key} 取值的区别

mapper映射文件

<select id="selectUser" resultType="com.rpf.domain.User" >select * from user where id=${id} and name=#{name}
</select>

调用语句

List<User> users = userDao.selectUser( 1,"Jone");

生成的查询语句

select * from user where id=1 and name=?

用$取的值会直接拼接到sql 而#是一个占位符 然后再拼接

区别:

#{}以预编译的形式 将参数设置到sql语句中 相当于JDBC的PreparedStatement; 可以防止sql注入

${}取出的值直接是拼装在SQL语句中,无法防止sql注入 ,会有安全问题。

使用场景

大多数情况下 我们取参数的值应该使用#{};

某些情况下 原生jdbc不支持占位符的情况 我们就可以使用${}进行取值

如分库分表操作 按照年份分表拆分了

   select  *   from  ${year}_salary   where   ......;

排序

     select  *   from  table  order  by   ${name}   ${order}

#{key}和${key} 取值的区别相关推荐

  1. 参数处理:#{}与${}取值的区别

    2019独角兽企业重金招聘Python工程师标准>>> #{}与${}都可以从传递的参数中取得对应的值,而且每种取值的写法都一样,不同在于 1.${}是采用SQL拼接的方式 2.在不 ...

  2. Map中的key,value null取值

  3. v-model获取值与.value取值的区别(v-model原理分析)

    vue中使用v-model在表单元素上创建双向数据绑定,在官方文档中简单的提到了它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能: 对,它本质上只是一个语法糖,但 ...

  4. springboot的redis工具类编写(采用RedisTemplate)(简单的取值,取多个值)。

    首先: redis存在于内存中,因此非常高效 存储特点是key-value 其还有许多高效的数据结构,能同时读写几万数据量. 在springboot中运用redis做一些验证存储非常管用, 同时因为r ...

  5. datetime 比较_Python 字典中key命中取值的两种方法性能比较!

    起步 从字典中取值有两个方法,一个是先判断key是否在字典中再取值:另一个是包裹try块中直接去取值: Python资源共享群:484031800 def use_in(d, key):if key ...

  6. GridView的多主键(Key)取值问题

    GridView的多主键(Key)取值问题! DataKeyNames="test1,test2" strPath = Me.GridView1.DataKeys(e.RowInd ...

  7. 源生JS 之对象key值为数字时的取值及修改key值方法

    取值: 如果对象key值为数字使用.key(.0)无法取到对应值: 只需稍加修改obj.['0']即可取到对应值. 修改: 与取值同理: 打印效果对比处理前后: 可以看到将原始key值为0.1.2修改 ...

  8. 后端获取接口数据属性为中文JSON取值(key是中文或者数字)处理方法

    JSON取值(key是中文或者数字)方式详解 先准备一个json对象用于演示 var json = {'name':'zhangsan', '年龄':23, 404:'你可能迷路了'}; 1.使用JS ...

  9. Js 中对 Json 数据的取值设值方式 ( 如何取 key 中含 . 的值 )

    JSON 是轻量级的文本数据交换格式,独立于语言,JSON 比 XML 更小.更快,更易解析.熟练运用Json是程序猿内需! var person = {id:001,name:"MoTec ...

最新文章

  1. 深入浅出卷积神经网络及实现!
  2. Django的前世今生
  3. linux shell ls 获取绝对路径
  4. Web开发框架–第1部分:选项和标准
  5. matlab空格会消失了,如何在Matlab中自动删除保存的尾随空格?
  6. 【CodeForces - 255C】Almost Arithmetical Progression (dp,离散化)
  7. 信息学奥赛一本通C++语言——1001:Hello,World!
  8. ASP.NET MVC铵钮Click后下载文件
  9. Nginx下Uwsgi模块常用参数说明
  10. 9000.消息中间件MQTT
  11. 如何才能降低真机测试成本和建议所使用平台
  12. 解决Android Studio默认AppTheme 没有lable标签,不显示等问题
  13. 八种常用排序算法参考
  14. linux 进程意外关闭,Webdriver异常:进程意外关闭,状态为1
  15. SPSS 进行两因素重复测量方差分析(Two-way repeated-measures ANOVA)详细操作步骤 (上)
  16. 三角网导线平差实例_导线平差自动计算表(非常实用)
  17. 深拷贝和浅拷贝的区别(必须掌握)
  18. 基于FPGA数字时钟的设计(附源码)
  19. java设置pdf不可编辑_Java动态生成pdf文件(使用itext编辑pdf)
  20. 全国联动css,CSS3 齿轮啮合联动动画

热门文章

  1. 5G对生活将有何影响
  2. 基于物联网技术的智慧病房管理系统(二)—— RTOS、AHT20 与 按钮功能实现
  3. 孤陋寡闻了,Python中类竟可以像列表一样操作
  4. java运维软件下载_开源运维自动化平台-opendevops
  5. linux 挂载iso系统镜像文件
  6. postman 使用
  7. shell脚本编写之常用基础命令(diff、patch、cut、sort、uniq、与||、test、tr)
  8. Java拖拽控件数据库_java实现鼠标拖放功能代码实例
  9. kafka-manager监控kafka集群启动失败
  10. 如何处理网站页面劫持、网站页面劫持原理及解决方法