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注入以外,还能在参数里含有单引号的时候自动转义。