Mybatis 记录

  1. {}, ${}两种传参数方式的区别

1) ${} 会将传入的参数完全拼接到sql语句中,也就是相当于一个拼接符号。

也就是,最后的处理方式就相当于

String sql = select * from user where id=${value}....

mybatis会将 ${value} 完全替换为参数 value 的值  相当于replace("${value}", value)的过程。

实际上mybatis 是先将sql转成char数组

然后截取 "${"前头的部分放入到容器,替换  以"${"开头 以 "}"结尾的内容。所以说它的作用相当于拼接符号。拼接后直接作为sql语句的一部分,所以如 果参数是可执行代码,sql是会直接执行的。这就是为什么它会导致sql注入。

2) #{} 是一个占位符, mybatis最后会将这个占位符,替换成?,

最后才进行prepareStatement的相应位置的?的替换,也就是  state.setString(序号,值),setInt(序号,值)....

Original: https://www.cnblogs.com/yingsong/p/9516291.html
Author: NewLife365
Title: Mybatis 记录

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543357/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 关于redis HSCAN count参数不生效的问题

    这的确是个坑,HSCAN是为了处理大量数据而设计的,可能也是因为这个原因,在数据量较少的情况下count参数并不会生效,具体阈值是多少并没有实际测验过不过可以断定的是一百条数据一下…

    Java 2023年6月13日
    0132
  • 2022-8-19 第六组 JDBC(2)

    PreparedStatement:执行sql的对象 1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1. &#x8F93…

    Java 2023年6月13日
    091
  • rocketmq简单消息发送

    有以下3种方式发送RocketMQ消息 可靠同步发送 reliable synchronous 可靠异步发送 reliable asynchronous 单向发送 one-way …

    Java 2023年6月16日
    070
  • [mac]Parallels Desktop 7 vmware fusion 4 测试心得

    Parallels Desktop 最早以前是我们教我们软件开发的老师推荐的东西 当时也就现在我发到51oc上的4.0 for windows版 应该说 这个 for window…

    Java 2023年5月29日
    081
  • 数据库锁表及解锁

    一、查询PG_STAT_ACTIVITY的信息 SELECT * FROM pg_stat_activity where datname=’bms’ and wait_event_…

    Java 2023年6月5日
    076
  • 纪念第一次创建博客

    在2021年10月1日,在这个重要的日子里,我在博客园对我的博客进行了第一次改动,修改了博客的背景图片和博客的模板。 Original: https://www.cnblogs.c…

    Java 2023年6月9日
    073
  • resultMap的用法以及关联结果集映射

    resultTyperesultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。如果sql查询到的字段与pojo的属性名不一致,…

    Java 2023年6月5日
    085
  • 多线程相关知识整理

    java内存区域和内存模型是不一样的东西,内存区域是指Jvm运行时将数据分区存储,强调对内存空间的划分。而内存模型是定义了线程和主内存之间的关系,即JVM在计算内存中的工作方式,如…

    Java 2023年6月8日
    075
  • Swagger以及knife4j的基本使用

    Swagger 介绍: Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的 Web 服务 RESTful是一种架构的规范与约束、原则,符合这种…

    Java 2023年6月14日
    077
  • 找rpm包

    对于不能yum连网安装的服务器,必须通过rpm包下载,可以通过如下方法下载: 1、在可以连网的centos中运行如下命令,下载工具包 yum install yum-plugin-…

    Java 2023年5月29日
    069
  • 今天不写代码,聊聊热门的知识图谱

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处。 哈喽大家好啊,我是Hydra。 前一段时间,boss交给我个任务,让我调研一下知识图谱技术。虽说有点NLP的底子,不过研究起…

    Java 2023年6月5日
    067
  • JavaCoreTechnology-1

    反射:能够分析类能力的程序称为反射。 在Java中提供了一个反射库,里面涵盖了大量的丰富精巧的工具集,可以用来编写能够动态操纵Java代码的程序。 在之后的文章中将会介绍到反射的功…

    Java 2023年6月5日
    0101
  • 自动装配

    Bean自动装配 自动装配是Spring满足bean依赖一种方式 Spring会在上下文中自动寻找,并自动给bean装配属性 在Spring中有三种装配的方式 在xml中显示的配置…

    Java 2023年6月14日
    054
  • Docker操作(二)容器

    Docker操作(二)容器 一、容器的特点: 1、容器是基于镜像来运行 2、容器具备沙箱机制,容器之间相互隔离 3、容器是运行在Docker内部,跟宿主机也是隔离的,但宿主机可以与…

    Java 2023年6月8日
    085
  • 花生壳内网穿透

    Original: https://www.cnblogs.com/weiapro/p/7688796.htmlAuthor: 天涯越野Title: 花生壳内网穿透

    Java 2023年6月13日
    072
  • Linux(一)——安装

    Linux(一)——安装 一、VMware Workstation Pro (一款虚拟机软件) 1.下载 打开网址https://www.vmware.com/cn.html跟着红…

    Java 2023年6月16日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球