https://www.2cto.com/database/201806/752139.html
用了一段时间的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注入以外,还能在参数里含有单引号的时候自动转义。
相关文章
- MyBatis中的@Mapper注解及配套注解使用详解(上)
- SQL 中详解round,floor,ceiling函数的用法和区别?
- Mybatis的mapper文件中$和#的区别
- Mybatis的mapper文件和全局配置文件详解
- mybatis中的mapper接口文件以及selectByExample类的实例函数详解
- 如果使用mybatis的逆向工程生成的po类及mapper,如果我们想要进行的对数据库的操作在mapper中没有对应的接口函数:比如生成的mapper接口中没有按照姓名及性别混合条件查询。我们的解决办法是:使用逆向工程生成的对应表的Example文件。
- mybatis中xml文件的${}和#{}区别
- 区别和详解:js中call()和apply()的用法
- SQL中distinct 和 row_number() over() 的区别及用法
- Mybatis中接口和对应的mapper文件位置详解