MyBatis面试题, MyBatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
MyBatis面试题, MyBatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
QA
Step 1
Q:: MyBatis 动态 SQL 有什么用?
A:: MyBatis 动态 SQL 主要用于在实际应用中根据不同的条件构造不同的 SQL 语句,从而提高代码的灵活性和可维护性。通过动态 SQL,可以避免在代码中硬编码大量的 SQL 语句,改进代码的复用性。
Step 2
Q:: MyBatis 动态 SQL 的执行原理是什么?
A:: MyBatis 动态 SQL 的执行原理是通过在 SQL 映射文件中定义动态 SQL 片段,并在程序运行时根据具体的条件拼接成完整的 SQL 语句。MyBatis 提供了一系列的动态 SQL 标签,如 <if>、<choose>、<when>、<otherwise>、<where>、<set>、<foreach>
等,用于构建动态 SQL 语句。
Step 3
Q:: MyBatis 提供了哪些动态 SQL 标签?
A:: MyBatis 提供了多种动态 SQL 标签,包括:<if>、<choose>、<when>、<otherwise>、<where>、<set>、<foreach> 等。每种标签都有其特定的用途,比如 <if> 用于条件判断,<foreach> 用于遍历集合,<where>
用于动态拼接 WHERE 条件等。
Step 4
Q:: 如何使用 MyBatis 的 <if>
标签构造动态 SQL?
A:: <if> 标签用于在 SQL 语句中根据条件判断是否拼接某段 SQL。其语法如下:<if test="condition">SQL 片段</if>。例如:<if test="name != null">AND name = #{name}</if>,这段代码表示如果 name 不为空,则在 SQL 中添加 AND name = #{name}
这个条件。
Step 5
Q:: MyBatis 中的 <foreach>
标签如何使用?
A:: <foreach> 标签用于遍历集合或数组,用于生成 IN 条件或批量插入等操作。其语法如下:<foreach collection="list" item="item" separator="," open="(" close=")">#{item}</foreach>。例如:<foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>,这段代码用于生成 IN 条件,如 (1, 2, 3)
。