<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.aizuda.snailjob.template.datasource.persistence.mapper.ServerNodeMapper"> <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> INSERT INTO sj_server_node (namespace_id, group_name, host_id, host_ip, host_port, expire_at, node_type, ext_attrs, create_dt) VALUES <foreach collection="records" item="item" index="index" separator=","> ( #{item.namespaceId,jdbcType=VARCHAR}, #{item.groupName,jdbcType=VARCHAR}, #{item.hostId,jdbcType=VARCHAR}, #{item.hostIp,jdbcType=VARCHAR}, #{item.hostPort,jdbcType=INTEGER}, #{item.expireAt,jdbcType=TIMESTAMP}, #{item.nodeType,jdbcType=TINYINT}, #{item.extAttrs,jdbcType=VARCHAR}, #{item.createDt,jdbcType=TIMESTAMP} ) </foreach> </insert> <update id="batchUpdateExpireAt" parameterType="java.util.List"> UPDATE sj_server_node SET expire_at = src.expire_at FROM sj_server_node AS dest JOIN ( <foreach collection="list" item="item" index="index" separator="UNION ALL"> SELECT #{item.hostId} AS host_id, #{item.hostIp} AS host_ip, #{item.expireAt} AS expire_at </foreach> ) AS src ON (dest.host_id = src.host_id AND dest.host_ip = src.host_ip) </update> </mapper>