(1)为什么要使用动态SQL
业务逻辑复杂时,SQL是动态变化的。在组合复杂的SQL语句时,需要去拼接,稍不注意就会出现错误。
mybatis动态SQL可以让我们在xml映射文件内,以标签的形式编写动态SQL,完成逻辑判断和动态拼接SQL的功能
(2)mybatis有哪几种动态SQL标签
trim、where、set、foreach、if、choose、when、otherwise、bind
(3)动态SQL的执行原理
使用OGNL从SQL参数对象中计算表达式的值,根据表达式的值动态拼接SQL,以此来完成动态SQL的功能。
注意:OGNL 全称 Object-Graph Navigation Language(对象图导航语言),是 Java 中的一个开源的表达式语言,用于访问对象数据。
(1)动态SQL之
<select id="findByAid" parameterType="user" resultType="user">
SELECT *
FROM t_User
<where>
<if test="id!=0">
and id = #{id}
if>
<if test="name!=null">
and name = #{name}
if>
where>
select>
(2)动态SQL之
<select id="findByIds" parameterType="list" resultType="User">
SELECT *
FROM t_user
<where>
<foreach collection="list" open="id in("close=")" item="id" separator=",">
#{id}
foreach>
where>
select>
注意:collection=“”
一般集合写list,数组写array