MyBatis 3支持在动态 SQL 中使用一种称为 OGNL(Object-Graph Navigation Language)的插入脚本语言。OGNL 是一种表达式语言,用于访问和操作对象图中的数据。

在 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