当前位置:龙哥网 > 网络技术 > MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)

MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)

longge3个月前 (03-01)网络技术50
目录
  • 前言
  • #{} 和 ${} 的区别
  • #{} 和 ${} 的实例:假设传入参数为 1
    • 实例步骤一
    • 实例步骤二
    • 实例步骤三
  • #{} 和 ${} 的大括号中的值
    • #{} 和 ${} 在使用中的技巧和建议
      • 总结

        前言

        在MyBatis 的映射配置文件中,动态传递参数有两种方式:

        1、#{} 占位符

        2、${} 拼接符

        #{} 和 ${} 的区别

        区别1

        #{} 为参数占位符 ?,即sql 预编译

        ${} 为字符串替换,即 sql 拼接

        区别2、

        #{}:动态解析 -> 预编译 -> 执行

        ${}:动态解析 -> 编译 -> 执行

        区别 3、

        #{} 的变量替换是在DBMS 中

        ${} 的变量替换是在 DBMS 外

        区别 4、

        变量替换后,#{} 对应的变量自动加上单引号''

        变量替换后,${} 对应的变量不会加上单引号 ''

        区别 5、

        #{} 能防止sql 注入

        ${} 不能防止sql 注入

        #{} 和 ${} 的实例:假设传入参数为 1

        实例步骤一

        #{}:select * from t_user where uid=#{uid}
        
        ${}:select * from t_user where uid= '${uid}'
        

        实例步骤二

        #{}:select * from t_user where uid= ?
        
        ${}:select * from t_user where uid= '1'
        

        实例步骤三

        #{}:select * from t_user where uid= '1'
        
        ${}:select * from t_user where uid= '1'
        

        #{} 和 ${} 的大括号中的值

        单个参数的情形

        #{}

        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)

        ${}

        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)
        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)

        多个参数的情形 #{}

        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)
        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)

        ${}

        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)
        MyBatis中#{}和${}有哪些区别_java(mybatis中$和井号区别)

        #{} 和 ${} 在使用中的技巧和建议

        1、不论是单个参数,还是多个参数,一律都建议使用注解@Param("")

        2、 能用 #{} 的地方就用 #{},不用或少用${}

        3、表名作参数时,必须用${}。如:select * from ${tableName}

        4、order by 时,必须用 ${}。如:select * from t_user order by ${columnName}

        5、表名处用#{}会直接报错;order by后面用#{}排序不生效

        6、使用 ${} 时,要注意何时加或不加单引号,即${} 和 '${}'。一般字段类型为char或者varchar时需要加单引号

        总结

        免责声明
        本站部分资源来源于互联网 如有侵权 请联系站长删除
        龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。#转载请注明出处!