1. 批量修改,批量删除,批量新增
1)批量更新
<update id="dwdatalink_delete_task_instances_byids" parameterType="java.util.Map">
UPDATE
data_link_task_run
SET
is_deleted = '1',
sys_update = CURRENT_TIMESTAMP,
sys_oper = #{owner}
WHERE
id IN
<!--对传入参数中的idList进行遍历,遍历时的标识为item,遍历后使用()包起来,每个元素用‘,’隔开-->
<foreach collection="idList" item="item" open="(" separator="," close=")" >
#{item}
</foreach>
</update>
传入的参数:
{owner=sys, idList=[7, 8, 9, 10]}
2)批量新增和批量删除类似与批量修改,只是批量新增时foreach包裹的是values里面的内容,逗号分隔;批量删除时,包裹的是WHERE过滤条件,使用‘AND’进行分隔,且不需要open和close。
2. 新增后返回主键
<insert id="dwdatalink_add_task_quartz" parameterType="java.util.Map" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
<selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO
data_link_task_quartz (cron_express, owner, sys_create, sys_oper)
VALUES
(#{cronExpress}, #{owner}, CURRENT_TIMESTAMP, #{owner})
</insert>
该ID必须是自增的,返回的ID会放入入参对象中,本例是map,
m.put("id", null);
int insertQuartz = commonDataSourceLinkDao.insert("dwdatalink_add_task_quartz", m);
if(insertQuartz > 0) {
timeRef = (Long)m.get("id");
} else {
logger.error("CRON表达式插入失败");
throw new Exception("任务新增失败!");
}
也就是需要先在map中存在以id为key的键值对,新增完毕后,使用get方法取出id的值即可。