Mybatis,#{}和${}取值符号

如图,两个方法的参数类型为简单类型,简单类型包括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 ‘张%’

显然,使用 ${},不自动添加单引号才是正确的

调用运行

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

素心如月桠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值