动态SQL

3.1使用动态SQL完成完成多条件查询

➢if:利用if实现简单的条件选择
➢choose(when,otherwise):相当于Java中的switch语句,通常与when和otherwise搭配
➢where:简化SQL语句中where的条件判断
➢set:解决动态更新语句
➢trim:可以灵活地去除多余的关键字
➢foreach:迭代一个集合,通常用于in条件

3.1.1使用if+where实现条件查询

1.if回顾上章的演示示例–根据用户角色(角色id精确匹配)和用户名称(模糊匹配)完成对用户表的查询操作,在该示例中,采用的是封装对象入参,进行查询.通过之前的学习,我们了解到在查询条件不是很多并且较为固定分情况下,最好的解决方案是采用多参数直接入参的方式,这样的代码比较清晰,可读性强,那么现在就改造一下这示例.
在这里插入图片描述
在上述代码中,参数使用了@param注解,并将参数roleld重置名诶userRole,故UserMapper.xml的代码无须改造
通过该运行结果发现,查询出来的用户列表为空,这个查询结果是否正确?

在上述示例中,我们改造了SQL语句,利用if元素实现简单的条件判断,if元素的test属性表示进入if内部需要满足的条件.整个SQL语义非常简单,诺提供了userRole参数(即:满足条件userRole!=null),那么SQL的where条件就要满足:u.userRole=#{userRole}.同样,诺提供了userName参数(即:满足条件userName!=null且userName!=’’),那么SQL的where 条件就要满足u.userName like concaat(‘%’,#{userName},’%’),最终返回满足这些where条件的数据列表.这是一个非常有用的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值