二刷Mybatis(十一)动态SQL

引言
Q:为何使用动态SQL?
A:举例:正常情况下具有多个限制条件的语句是这样的
(查询全班学生名字如果人数等于20人,且如果男生大于女生人数.....)
为了简化这种情况带来的复杂语句编写

1 搭建动态sql环境

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 标签

2.1 if

目的:
没有指明查询什么数据的时候全部查出来;
当指明需要查询某作者,某标题也可以查到对应的数据;

select * from blog where auther=#{auther} and title=#{title}
//但是这样显然不可以满足上述两个条件

在这里插入图片描述

这里使用where 1=1的原因:不能这样使用吧(and前面不写东西)

select * from blog where  and title=#{title}

所以暂时这样使用(不完全规范)

select * from blog where 1=1
        <if test="author != null ">
        and author = #{author}
        </if>

        <if test="title != null ">
            and title = #{title}
        </if>

map未传入数据的时候可以查到所有的数据

在这里插入图片描述

map传入数据的时候

在这里插入图片描述

2.2 where

那么不使用where1=1怎么办,Mybatis提供了一个where标签

为什么这个标签会有这个作用呢?
回顾一下,我们是为了避免错误的sql

select * from blog where  and title=#{title}

在这里插入图片描述

意思是至少满足一个if条件才插入where,只满足一个if条件时候自动去除and/or

传一个参数
在这里插入图片描述
传两个参数
在这里插入图片描述
不传参数
在这里插入图片描述

2.3 choose

相当于switch和case

在这里插入图片描述

在这里插入图片描述

2.4 set

在这里插入图片描述
在这里插入图片描述
官网解释了set的作用,验证我们的测试案例

在这里插入图片描述

2.5 SQL片段 < include >

经过上述的例子,我们发现在sql语句中的if语句代码是重复的,如果需要写上百个sql语句,代码就显的笨重,所以需要将重复的代码提取出来,作为公共部分调用
尽量最好只包含 if 片段

在这里插入图片描述
在这里插入图片描述

2.6 Foreach

举例
在这里插入图片描述
应用

准备工作:数据库的信息

在这里插入图片描述

准备工作:测试一下sql语句的查询结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3 SUM

动态sql的几个标签已经练习完了,可以发现相比较之前的sql查询,动态sql更灵活,(举例:联想一下浏览器查询功能,输入想要查询的信息就可以查到满足不同条件的信息)

建议:在写动态sql时候,先把完整的sql测试一下
在这里插入图片描述
然后在xml使用标签拼接sql命令

有了基础:接下来就是持续提升

  • Mysql引擎
  • InnoDB底层原理
  • 索引
  • 索引优化
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值