zoukankan      html  css  js  c++  java
  • OGLN两种表达式的区别

    在我们使用@Param(“id”)绑定一个参数时,Mybatis会暂时将它对应的值放在一个临时的参数池里面。
    #{}以及$()都可以访问参数池。如果加上@Param(“id”),那么可以使用#{id}以以${id}去获得参数池里面的值。但是,如果没有@Param(“id”),那么参数池里面是没有id的值的。那么这个值只有#{}在参数中获得。而${id}只能在参数池获得数据,所以就无法获得。

    #{}与${}的区别是:
    1、${}只能在临时参数池获的数据,所以使用${key}必须要结合@Param使用。而#{}可以从参数池以及参数获得对应的值,并不需要@Param注解

    2、#{key}用于设置PreparedStatement对象的?(问号)参数 的。所以它只能用于设置SQL参数,DDL操作,对数据库对象的增删改查,对象名是不可以使用#{key},如:

    3、使用${key}用在DML、DQL的SQL语句的参数里面是不安全的,可能出现SQL被注入的问题。如:

    非必要情况下尽量使用#{}

    问题:那么${}有什么用呢?
    答:注意基于JDBC的接口的原来的表名是不可以使用?的,?只能用于传入的参数。
    如果操作的涉及表名这些非参数的 数据(表名,视图名)时,需要使用${}

  • 相关阅读:
    13 | 效率为王:脚本与数据的解耦 + Page Object模型
    关于编程与生活
    我的python学习笔记
    Tarjan学习笔记
    web----https请求过程
    JVM----堆内存设置原理
    算法----快速排序
    SpringCloud----spring security Oauth2认证解决方案
    Mysql----insert/update/delete
    课外知识----单点登录
  • 原文地址:https://www.cnblogs.com/cdeelen/p/10841316.html
Copyright © 2011-2022 走看看