在 MyBatis 的动态 SQL 中,OGNL 可以用于条件判断、循环遍历、变量赋值等操作,以构建更复杂的 SQL 语句。以下是一些基本的 OGNL 使用示例:
条件判断
<select id="getUser" parameterType="map" resultType="User">
SELECT * FROM users
WHERE
<if test="condition == 'name'">
name = #{value}
</if>
<if test="condition == 'age'">
age = #{value}
</if>
</select>
在这个例子中,condition 是一个参数,根据其值判断使用哪个条件进行查询。
循环遍历
<select id="getUsersByIdList" parameterType="map" resultType="User">
SELECT * FROM users
WHERE id IN
<foreach collection="idList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
在这个例子中,idList 是一个参数,通过 <foreach> 元素对其进行遍历,生成 IN 子句。
变量赋值
<select id="getUsersByCondition" parameterType="map" resultType="User">
<bind name="condition1" value="'%' + username + '%'" />
SELECT * FROM users
WHERE username LIKE #{condition1}
</select>
在这个例子中,通过 <bind> 元素将一个变量 condition1 赋值为 '%' + username + '%',后续可以在 SQL 中引用该变量。
OGNL 还支持更多的表达式、函数调用等,使得在动态 SQL 中的逻辑更加灵活。在 MyBatis 的文档中,你可以找到关于 OGNL 的更详细的语法和用法说明。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7026/MyBatis