1、If标签
缺点:当有多个条件的时候,如果第一个列为空,将不会进行条件连接,而后面的条件会多加上and,所有会出错
映射文件:
--------------------------------------------------------------------------
接口:
-------------------------------------------------------------
测试:
- If+where条件判断
映射文件:
-----------------------------------------------------------------------------
接口:
与上面一样的
-------------------------------------------------------------------------
测试:
- Set+if跟新
当update语句中没有使用if标签时,如果有一个参数为null,都会导致错误。
当在update语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。
映射文件:
----------------------------------------------------------------------------------------
接口:
---------------------------------------------------------------------------------------
测试:
- trim代替set
映射文件:
------------------------------------------------------------------------------------------
接口:
--------------------------------------------------------------------------------------------
测试:
- trim代替where标签
映射文件:
----------------------------------------------------------------------------------------------------
接口:
----------------------------------------------------------------------------------------
测试:
- choose (when, otherwise)
类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default
如果有一个成立,则choose结束
映射文件:
------------------------------------------------------------------------------------------------
接口:
-----------------------------------------------------------------------------------------------
测试:
7、Foreach(参数可以配置为array或者参数为list
主是要迭代一个集合,通常是用于IN 条件,List 实例将使用“list”做为键,数组实例以“array” 做为键。
映射文件:
(array数组参数)
-------------------------------------------------------------------------------------
(list集合参数)
------------------------------------------------------------------------------------
接口:
-----------------------------------------------------------------------------------------------
测试:
8、批量操作
批量插入
<insert id="saveAll" >
insert into users(username,password,email) values
<foreach collection="list" item="user" separator=",">
(#{user.username},#{user.password},#{user.email})
</foreach>
</insert>
查询
<select id="findAllById" resultType="Users" >
select * from users where userid in
<foreach collection="list" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
注意:如果用param1、param2、0、1获取属性,必须接口有多个参数,不能是只有一个参数
9、动态sql