mybatis inserta datos de la lista en la base de datos

Requisito previo

En las necesidades comerciales de los últimos días, encontré la inserción de datos de la lista en la base de datos o la consulta de los datos en la lista. Para las consultas, mi primera idea fue escribir una declaración SQL simple y ejecutar SQL en una declaración de bucle, pero esto consumirá mucho dinero y no se puede usar de esta manera, por lo que solo puede escribir el bucle en la declaración sql. Naturalmente, pensé en usar sql dinámico y foreach en mybatis.

Explicación del código específico

InventoryDetail

@Table(name = "t_inventory_detail")
public class InventoryDetail {
    
    
    /**
     * 主键ID
     */
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    /**
     * 盘点头表ID
     */
    @Column(name = "inventory_header_id")
    private Integer inventoryHeaderId;

    /**
     * 盘点履历表ID
     */
    @Column(name = "inventory_resume_id")
    private Integer inventoryResumeId;

    /**
     * 商品ID
     */
    @Column(name = "product_id")
    private Integer productId;

    /**
     * 在库数量
     */
    @Column(name = "stock_quantity")
    private Integer stockQuantity;

    /**
     * 在库单价
     */
    @Column(name = "stock_price")
    private Long stockPrice;

    /**
     * 创建时间
     */
    @Column(name = "create_date")
    private Date createDate;

    /**
     * 创建人ID
     */
    @Column(name = "create_user_id")
    private Integer createUserId;

    /**
     * getter 和 setter 方法
     */
}

mapeador

public interface InventoryDetailMapper {
    
    
    /**
     * 插人数据到盘点详情表
     *
     */
    @Insert("<script> " +
            "insert into t_inventory_detail (inventory_header_id, product_id, stock_quantity, stock_price, create_date, create_user_id)" +
            " values " +
            " <foreach collection='list' item='inventoryDetail' separator=','>" +
            " (#{inventoryDetail.inventoryHeaderId}," +
            "  #{inventoryDetail.productId}," +
            "  #{inventoryDetail.stockQuantity}," +
            "  #{inventoryDetail.stockPrice}," +
            "  #{inventoryDetail.createDate}," +
            "  #{inventoryDetail.createUserId})" +
            "</foreach> " +
            "</script>")
    Integer insertInventoryDetail(@Param("list") List<InventoryDetail>  list);
}

Esto está escrito en sql en los comentarios, también puede cambiarlo para escribir en archivos xml. Las oraciones son similares. como sigue:

<insert id="insertInventoryDetail" parameterType="java.util.List" useGeneratedKeys="false">
    			insert into t_inventory_detail
    			( inventory_header_id, product_id, stock_quantity, stock_price, create_date, create_user_id)
    			values
    			<foreach collection="list" item="inventoryDetail" separator=",">
    				(
    					#{
    
    inventoryDetail.inventoryHeaderId},
    					#{
    
    inventoryDetail.productId},
    					#{
    
    inventoryDetail.stockQuantity},
    					#{
    
    inventoryDetail.stockPrice},
    					#{
    
    inventoryDetail.createDate},
    					#{
    
    inventoryDetail.createUserId}}
    				)
    		     </foreach>		
    </insert>    
</mapper>

Nota: Las condiciones en foreach corresponden a su declaración SQL.

resumen

La consulta y la inserción son casi lo mismo. Solo mire la oración y vuelva a escribirla.

Supongo que te gusta

Origin blog.csdn.net/hello_cmy/article/details/108074097
Recomendado
Clasificación