如图,两个方法的参数类型为简单类型,简单类型包括8大基本类型和String
1. #{}取值符号会自动为String类型的参数加上‘’单引号
2. ${}取值符号不会自动为String加上‘’单引号
当sql标签的查询代码是 select * from t_user where username = ‘lyx’;
这种情况,需要使用自动加上单引号的#{}:select * from t_user where username = #{username}
当查询数据降序排序时:
UserDao接口如下:
select * from t_user order by 排序字段名 desc
UserMapper.xml文件如下:
调用
queryUserOrderByColumn(String column)运行结果
queryUserOrderByColumn2(String column)运行结果2
看数据库中的数据,说明方法1没有成功降序排序
所以对于动态排序的sql语句,要用${},而不用#{}
对于排序正确 的代码是
select * from t_user order by username desc
如果使用#{},会自动为String类型添加单引号,变成
select * from t_user order by 'username' desc
所以查不到数据
来看使用${}的第二种情况:模糊查询
sql语句应该是,
LIKE_ (单个任意字符)
列名 LIKE ‘张_’
LIKE % (任意长度的任意字符)
列名 LIKE ‘张%’
显然,使用 ${},不自动添加单引号才是正确的
调用运行
运行结果: