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注入以外,还能在参数里含有单引号的时候自动转义。
posted @ 2022-05-27 16:18  翘中之楚  阅读(67)  评论(0编辑  收藏  举报