-
trim
<trim prefix="" suffix="" prefixOverrides="" suffixOverrides=""></trim> 属性: prefix:给sql语句拼接前缀 suffix:给sql语句拼接后缀 prefixOverrides:去除sql语句前由prefixOverrides指定的的关键字或者字符 suffixOverrides:去除sql语句后由suffixOverrides指定的的关键字或者字符 示例1: 当第一个条件不生效时,prefixOverrides会将符合条件紧跟WHERE关键词的if中语句前的AND关键词去掉 <trim prefix="WHERE" prefixOverrides="AND"> <if test="state != null"> state = #{state} </if> <if test="title != null"> AND title like #{title} </if> <if test="author != null and author.name != null"> AND author_name like #{author.name} </if> </trim> 示例2: 新增时动态添加列名。若最后一个条件不生效,语句就会多出一个逗号。suffixOverrides则会将其去掉 INSERT INTO user <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id , </if> <if test="name != null"> name , </if> <if test="author != null and author.age != null"> age </if> </trim> values (....) 示例3 修改时可动态拼接需要set的列 update xazq_system_mail <trim prefix="set" suffixOverrides=","> <trim prefix="from =case" suffix="end,"> <foreach collection="list" item="i" index="index"> <if test="i.standardFromUuid!=null"> when id=#{i.id} then #{i.standardFromUuid} </if> </foreach> </trim> <trim prefix="to =case" suffix="end,"> <foreach collection="list" item="i" index="index"> <if test="i.standardToUuid!=null"> when id=#{i.id} then #{i.standardToUuid} </if> </foreach> </trim> </trim> WHERE ....
-
foreach
<foreach collection="" index="" item="" open="" separator="" close=""></foreach> separator表示在每次迭代之间以什么符号作为分隔符, item表示集合中每一个元素进行迭代时的别名, index表示在迭代过程中,每次迭代到的下标位置, open表示循环语句以什么开始, close表示循环语句以什么结束。 1. parameterType传入一个list List list = new ArrayList(); <select id="test" parameterType="java.util.List" resultType="User"> select * from user where id in <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> 2. parameterType传入一个数组 int[] ids = new int[3]; <select id="dynamicForeach2Test" parameterType="java.util.ArrayList" resultType="User"> select * from user where id in <foreach collection="ids" index="index" item="item" open="(" separator=","close=")"> #{item} </foreach> </select> 3. 传入参数为多个又需要使用foreach循环使用,可将所有参数封装为一个map传入 Map<String,Object> map = new HashMap<>(); <update id="updateBatch" parameterType="java.util.Map"> update user <trim prefix="set" suffixOverrides=","> <trim prefix="name =case" suffix="end,"> <foreach collection="map" item="i" index="index"> <if test="i.standardFromUuid!=null"> when id=#{i.id} then #{i.standardFromUuid} </if> </foreach> </trim> <trim prefix="standard_to_uuid =case" suffix="end,"> <foreach collection="list" item="i" index="index"> <if test="i.standardToUuid!=null"> when id=#{i.id} then #{i.standardToUuid} </if> </foreach> </trim> </foreach> </trim> </trim> where id in <foreach collection="map" item="i" open="(" separator="," close=")"> #{i.id} </foreach> </update>
Mybatis常用标签详解
最新推荐文章于 2024-08-04 11:07:52 发布