欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis的mapper文件中$和#的用法及区别详解

程序员文章站 2023-11-27 16:15:10
用了一段时间的mybatis了,对于$和#的用法老是很迷糊,特此记下加深记忆。 简单来说 #{} 会在将参数加上引号,例如: select * from user where username=#{...

用了一段时间的mybatis了,对于$和#的用法老是很迷糊,特此记下加深记忆。

简单来说 #{} 会在将参数加上引号,例如:

select * from user where username=#{username} ;

带上参数后的sql语句即:

select * from user where username="xulitong" ;

而${}并不会在给参数加上引号,例如:

select * from user order by ${id} desc limit #{offset},#{limit};

带上参数后的sql语句为:

select * from user order by id desc limit 0,10;

可见,mybatis对参数没有进行任何的处理。通常${}用于group by,order by ,limit等的后面。

但是,实际应用中,并不提倡使用 ${},因为使用 #{} 写法,除了可以防止sql注入以外,还能在参数里含有单引号的时候自动转义。