在mapper配置文件中,有时需要根据查询条件选择不同的SQL语句,或者将一些使用评率高的SQL语句单独配置,在需要使用的地方引用。Mybatis的一个特性:动态SQL,来解决这个问题。
mybatis动态sql语句是基于OGNL表达式的,主要有以下几类:
1. if 语句 (简单的条件判断)
2. choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似
3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)
4. where (主要是用来简化sql语句中where条件判断的,能智能的处理 and or ,不必担心多余导致语法错误)、
5. set (主要用于更新时)
6. foreach (在实现 mybatis in 语句查询时特别有用)
if标签语句if标签用来实现根据条件拼接sql语句,下面示例用来判断参数如果不为null,则拼接sql
示例:
<select id="ifTest" resultType="com.sl.po.Product"> select * from products where <if test="ProductName!=null"> name like #{ProductName} </if> <if test="description!=null"> and description like CONCAT(CONCAT('%', #{Description, jdbcType=VARCHAR}),'%') </if> </select>