mybatis는 데이터베이스에 목록 데이터를 삽입합니다.

전제 조건

지난 며칠 동안 비즈니스 요구 사항에서 데이터베이스에 목록 데이터를 삽입하거나 목록에있는 데이터를 쿼리하는 일이 발생했습니다. 쿼리의 경우 첫 번째 아이디어는 간단한 SQL 문을 작성하고 루프 문에서 SQL을 실행하는 것이 었습니다. 많은 돈을 소비하고 이런 식으로 사용할 수 없으므로 SQL 문에서만 루프를 작성할 수 있습니다. 당연히 mybatis에서 동적 SQL과 foreach를 사용할 생각이었습니다.

특정 코드 설명

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 方法
     */
}

매퍼

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);
}

이것은 주석으로 작성된 SQL이며 xml 파일로 작성하도록 변경할 수도 있습니다. 문장이 비슷합니다. 다음과 같이 :

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

참고 : foreach의 조건은 SQL 문에 해당합니다.

요약

쿼리와 삽입은 거의 동일합니다. 문장을보고 다시 쓰세요.

추천

출처blog.csdn.net/hello_cmy/article/details/108074097