首页 > 其他 > 详细

mybatis 中 #{} 和 ${} 的区别

时间:2020-04-17 16:32:03      阅读:60      评论:0      收藏:0      [点我收藏+]

mybatis 中 #{} 和 ${} 的区别:

1、相同:都可以用来获取传入的参数值

2、不同:    #{}:是以预编译的形式,将参数设置到sql语句中;jdbc中的PreparedStatement,可以防止sql注入,sql语句以?号的形式

       ${}:取出的值直接拼装在sql语句中;会有安全问题;

例如:

<select id="getEmpByIdAndName" resultType="com.mybatis.bean.Emp" databaseId="mysql">
        select * from emp where id = #{id} and  name = #{name}
    </select>

SQL : Preparing: select * from emp where id = ? and name = ? 

如果用${}:

<select id="getEmpByIdAndName" resultType="com.mybatis.bean.Emp" databaseId="mysql">
        select * from emp where id = ${id} and  name = #{name}
    </select>

SQL :  Preparing: select * from emp where id = 101 and name = ?

 

大多数的时候,我们都用#{},而${}的用在jdbc不支持占位符的地方:

例如:

根据传入的分表的下标来查询数据,emp分为三个表,传入index来查询不同的表

select * from emp_${index}

用来排序order by ${字段}

select * from emp order by  ${field}

 

mybatis 中 #{} 和 ${} 的区别

原文:https://www.cnblogs.com/tdyang/p/12720602.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!