zoukankan      html  css  js  c++  java
  • 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(序号,值)....
  • 相关阅读:
    android 图表
    android assets 文件路径,与文件是否存在
    WebKit 与Chromium
    android footerView 的使用
    android gif
    webkit 介绍
    java 内存优化2
    jive论坛
    ajax josn
    jsp 数据饼图
  • 原文地址:https://www.cnblogs.com/yingsong/p/9516291.html
Copyright © 2011-2022 走看看