Mybatis标签属性的描述
属性 | 描述 |
---|---|
collection | foreach需要遍历的对象,当入参为单参数时,List<?> 默认使用“list 作为键”,数组对象使用“array”作为键,Map 对象没有默认的键。多参数或者 map 类型参数时,可以使用 @param(“keyName”) 来指定 key 值。该参数必填 |
item | 循环体中具体的对象的别名。同时支持属性获取,如:item.getName。该参数必填。 |
separator | 元素之间的分隔符。该参数可选 |
open | foreach代码的开始符号。常用在 in(),value()等语句中。改参数可选 |
close | 同 open。foreach 代码的关闭符号。 |
index | 在 list 和 array 中,index 是元素的序号。在 map 中,index 为元素的key。每次迭代到的位置。该参数可选。 |
批量插入操作
接口层:
int insertBatch (List<AlarmSubDevRecord> devRecords);
mapper 层:
<insert id="insertBatch" paramterType="list">
INSERT INTO tbl_is_alarm_sub_dev (rule_id,dev_code,dev_org_code,create_datetime) VALUES
<foreach collection="list" separator="," item="item">
(#{item.ruleId,jdbcType=INTEGER},
#{item.devCode,jdbcType=VARCHAR},
#{item.devOrgCode,jdbcType=VARCHAR},
#{item.createDatetime,jdbcType=TIMESTAMP})
</foreach>
</insert>
批量查询
接口层:
List<AlarmSubRuleRecord> selectBatch(List<Integer> ruleIds);
mapper 层:
select id="selectBatch" parameterType="list" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM tbl_is_alarm_sub_rule
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
批量删除
- 单参数
接口层:
int deleteBatchByRuleIds(List<Integer> ruleIds);
mapper 层
<delete id="deleteBatchByRuleIds" parameterType="java.util.List">
DELETE FROM tbl_is_alarm_sub_dev
WHERE rule_id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
- 多参数
接口层:
int deleteBatch(@param("groupId") Integer groupId, @param("deleteUsers") List<String> deleteUsers);
mapper 层:
<delete id="deleteBatch" parameterType="java.util.List">
DELETE FROM tbl_is_alarm_sub_group_user WHERE
group_id = #{groupId, jdbcType=INTEGER}
AND user_code IN
<foreach collection="deleteUsers" item="item" open="(" separator="," close=")">
(#{item, jdbcType=VARCHAR})
</foreach>
</delete>