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 |