• mybatis中xml文件的${}和#{}区别


    之前的笔记:#{}相当于JDBC的?

    ${}是字符串连接符,如果入参为普通类型{}中只写value

    在项目中要实现所有业务批量提交的功能,实现方式,把表名,表主键字段当做参数传递,在xml文件中全部使用的#{},导致解析的时候出现问题。


    1 #是将传入的值当做字符串的形式, eg:select id,name,age from student where id
    =#{id},当前端把 id 值 1,传入到后台的时候,就相当于 select id,name,age from student
    where id ='1'.
    2 $是将传入的数据直接显示生成 sql 语句, eg:select id,name,age from student where
    id =${id},当前端把 id 值 1,传入到后台的时候,就相当于 select id,name,age from
    student where id = 1.
    3 使用#可以很大程度上防止 sql 注入。 (语句的拼接)
    4 但是如果使用在 order by 中就需要使用 $.或传入表名, 因为表名不能带引号(可以带
    `tablename`,小撇)
    5 在大多数情况下还是经常使用#,但在不同情况下必须使用$.
    我觉得#与的区别最大在于: #{} 传入值时, sql 解析时,参数是带引号的,而的区别最大
    在于: #{} 传入值时, sql 解析时,参数是带引号的,而{}穿入值, sql 解析时,参数是不
    带引号的。
    #{ }:解析为一个 JDBC 预编译语句(prepared statement)的参数标记符。预编译,重复
    利用,效率高

  • 相关阅读:
    springboot配置redis缓存
    【spark】local模式运行
    mybatis从入门到精通(二) 增删查改
    学习设计模式
    学习设计模式
    mybatis从入门到精通(一) 入门
    学习NIO 之 使用方法
    学习 NIO 之 零拷贝
    Java并发
    学习设计模式
  • 原文地址:https://www.cnblogs.com/w123w/p/10644117.html
Copyright © 2020-2023  润新知