mybatis动态sql

Posted hy7873

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis动态sql 相关的知识,希望对你有一定的参考价值。

1、<if> (单个条件)

 

2、<choose> <when> (多个分支条件)

 

3、<where>用于智能的处理where条件,可以智能地加上和去掉条件中的and

<select>

select * from user

<where>

<if test="userName != null">

and userName like  #{userName}

</if>

<if test="id!= null">

and id= #{id}

</if>

</where>

</select>

 

4、<set>处理update操作,可以智能地去掉或加上set里面的逗号

<update>

update user

<set>

<if test="userName != null"> userName=#{userName},</if>

<if test="password!= null"> password=#{password},</if>

</set>

</update>

 

5、<trim>可以自动为sql添加前缀和后缀,消减前缀字符或后缀字符

<update>

update user

<trim prefix="set" suffixOverride="," suffix="where id=#{id}">

<if test="userName!=null and userName!=‘‘ ">

userName=#{userName},

</if>

<if test="password!=null and password!=‘‘ ">

password=#{password},

</if>

</trim>

</update>

 

6、foreach循环标记,主要用于循环查询条件,循环更新

循环查询条件:

<select>

select * from user

<where>

id in 

<foreach item="item" index="index" collection="list" open="(" separator="," close=")">

#{item}

</foreach>

</where>

</select>

批量赋值:

<insert>

insert into user(username,password)

values

<foreach item="item" index="index" collection="list" open="" close="" separator=",">

(#{item.userName},#{item.password})

<foreach>

</insert>

解释:

item循环到的某个元素

index循环的索引

collection循环的集合

open循环的开始符号

close循环的结束符号

以上是关于mybatis动态sql 的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis 动态SQL

MyBatis:动态sql语句

mybatis 动态SQL .2

mybatis 详解------动态SQL

mybatis 详解------动态SQL

MyBatis学习——动态SQL