Actualización por lotes e inserción por lotes de mybatis (claro y claro)

inserte la descripción de la imagen aquí

inserto de lote mybatis

<!-- 批量插入 -->
	<insert id ="insertFenoAppRHHardDeviceList" parameterType="java.util.List">
		<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">  
	          SELECT LAST_INSERT_ID() AS ID    
	    </selectKey>
	INSERT INTO rp_feno_app_rh_hard_device
		(CREATE_DATE ,MODIFY_DATE ,IMEI ,IS_UPGRADE ,FENO_APP_RH_HARD_ID ,IS_DEFAULT)
	VALUES
		<foreach collection ="list" item="item" index= "index" separator =",">
		     (
			  NOW()
			 ,NOW()
		     ,#{
    
    item.imei,jdbcType=VARCHAR}
		     ,#{
    
    item.isUpgrade,jdbcType=BOOLEAN}
		     ,#{
    
    item.fenoAppRHHard.id,jdbcType=BIGINT}
		     ,#{
    
    item.isDefault,jdbcType=BOOLEAN}
		     )
		</foreach>
	</insert>

actualización por lotes de mybatis

Método 1 (recomendado)

En el archivo xml de mybatis, use la etiqueta dinámica foreach para empalmar sentencias SQL, cada sentencia de actualización de datos corresponde a una sentencia de actualización, y finalmente se empalman múltiples sentencias usando el signo ";".

<update id="updateFenoAppRhHardDeviceList"  parameterType="java.util.List">  
    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
        update rp_feno_app_rh_hard_device 
        <set>
            id=${
    
    item.id},
            imei=${
    
    item.imei}
        </set>
        where id = ${
    
    item.id}
    </foreach>      
</update>

Método 2 (no recomendado)

La eficiencia de la consulta es baja y hay muchas configuraciones.

<update id="updateFenoAppRhHardDeviceList" parameterType="java.util.List">
		<!-- 方法2 -->
		UPDATE rp_feno_app_rh_hard_device 
		<trim prefix="SET" suffixOverrides=",">
         	<trim prefix="MODIFY_DATE = case" suffix="end," >
             	<foreach collection="list" item="i" index="index">
           			WHEN id=#{
    
    i.id,jdbcType=BIGINT} THEN NOW()
          		</foreach>
          	</trim>
         	<trim prefix="IMEI = case" suffix="end," >
             	<foreach collection="list" item="i" index="index">
           			<if test="i.imei!=null and i.imei!=''">
                       	WHEN id=#{
    
    i.id,jdbcType=BIGINT} THEN #{
    
    i.imei,jdbcType=VARCHAR}
                   	</if>
          		</foreach>
          	</trim>
   		</trim>
      	WHERE
   		<foreach collection="list" separator="or" item="i" index="index" >
 			ID = #{
    
    i.id,jdbcType=BIGINT}
     	</foreach>
	</update>

Resumen de uso de mybatis-plus

MyBatis-Plus (se abre en una ventana nueva) (MP para abreviar) es una herramienta de mejora para MyBatis (se abre en una ventana nueva).Sobre la base de MyBatis, solo se realizan mejoras sin cambios, y nació para simplificar el desarrollo y mejorar la eficiencia.
Documento oficial: https://baomidou.com/pages/24112f/

inserto de lote mybatis-plus

Inserción por lotes de capa de servicio

// 插入(批量)
boolean saveBatch(Collection<T> entityList);
// 插入(批量)
boolean saveBatch(Collection<T> entityList, int batchSize);

Análisis de inserción por lotes:

tipo nombre del parámetro describir
T entidad objeto de entidad
Recopilación lista de entidades colección de objetos de entidad
En t tamaño del lote Insertar cantidad de lote

Inserción o actualización por lotes de la capa de servicio

// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

Inserción por lotes o análisis de actualización:

tipo nombre del parámetro describir
T entidad objeto de entidad
Recopilación lista de entidades colección de objetos de entidad
En t tamaño del lote Insertar cantidad de lote

actualización por lotes de mybatis-plus

// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList, int batchSize);

Análisis de actualización por lotes:

tipo nombre del parámetro describir
T entidad objeto de entidad
Recopilación lista de entidades colección de objetos de entidad
En t tamaño del lote Insertar cantidad de lote

Supongo que te gusta

Origin blog.csdn.net/qq_44697754/article/details/129439534
Recomendado
Clasificación