Dynamic SQL(动态 SQL) 指的是在程序运行期间,根据条件或输入动态拼接、生成并执行的 SQL 语句(而不是在代码中写死的一条固定 SQL)。
✅ 示例(MyBatis):
<select id="findUser">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
一个方法可应对多种查询条件。
❌ 没有动态 SQL:
findByName()
findByAge()
findByNameAndAge()
✅ 有动态 SQL:
findUser(UserQuery query)
适合:
主流框架都支持:
<if> <foreach> <choose>)⚠️ 虽然好用,但也有风险:
SQL 注入风险
"WHERE name='" + name + "'")可读性和调试难度增加
性能问题
Dynamic SQL 的最大优势是“灵活 + 少写代码”,特别适合多条件、复杂查询场景,但必须注意 SQL 安全和性能。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。