# 【付费】第16章:解析含标签的动态SQL语句

作者:小傅哥
博客:https://bugstack.cn (opens new window)
星球:https://t.zsxq.com/Ja27ujq (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

# 一、前言

你手里还有几张能打的牌?

做技术的这一路走来,每一项技能的学习就像是给自己手里抓牌,总想凑齐一条龙,或者堆个炸。用一条龙串联出完整的技术栈体系,用一堆炸来深挖技术点。有广度、有深度才能站得住,也能第一个把牌打出去。

那你现在手里有龙了吗,有炸了吗,还是都是些细碎的不成体系的知识点,一个莽子带个犊子,3467没有5。其实往往难拿的就是那给为了凑龙和炸的5,要花费大量的时间和精力,才能掌握这个看似很小的技术点。只有追求长久学习价值,把这些内容夯实了,才有机会让自己成为那个一手硬牌的男人。

# 二、目标

在前面所有的章节中,我们在 Mapper XML 中配置的 SQL 一直都是静态 SQL 语句,也就是说测试的是一条完整的 SQL 语句,例如:select * from table where id = ? 那么其实在实际的使用场景中,我们往往会需要根据入参对象中的字段是否有值,判断后才被设置到 SQL 语句上,如图 16-1 所示 根据判断 activityId 是否为 null 拼装到 SQL 语句上

图 16-1 根据判断 activityId 是否为 null 拼装到 SQL 语句上

而这样一种基于拼装 SQL 的方式,在 Mybatis 框架中是非常常用的,所以我们需要在现有对 Mapper XML 静态 SQL 的解析上,在 XML 脚本构建器中扩充对动态 SQL 的处理,最终让我们的 ORM 框架可以配置拼装 SQL 语句。