mybatis insere os dados da lista no banco de dados

Pré-requisito

Nas necessidades de negócios dos últimos dias, encontrei inserir dados de lista no banco de dados ou consultar os dados da lista. Para consultas, minha primeira ideia era escrever uma instrução SQL simples e executar SQL em uma instrução de loop, mas isso consumirá muito dinheiro e não pode ser usado dessa forma, portanto, você só pode escrever o loop na instrução sql. Naturalmente, pensei em usar sql dinâmico e foreach no mybatis.

Explicação de 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);
}

Este é sql escrito em comentários, você também pode alterá-lo para escrever em arquivos xml. As frases são semelhantes. do seguinte modo:

<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>

Observação: as condições em foreach correspondem à sua instrução sql.

resumo

Consulta e inserção são quase iguais. Apenas observe a frase e reescreva-a.

Acho que você gosta

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