zoukankan      html  css  js  c++  java
  • Mybatis批量插入,是否能够返回id列表

    第1次代码
    void batchAdd(List<Photo> list);
    <insert id="batchAdd"   parameterType="java.util.List" keyProperty="id" useGeneratedKeys="true">
    		insert into
    		photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
    		values<foreach item="item" index="index" separator="," collection="list">
    			(#{item.bizid},#{item.cover},#{item.sort},#{item.url},#{item.name},#{item.remark},#{item.status},#{item.type},now(),now())
    		</foreach>
    	</insert>


    报错
    Error getting generated key or setting result to parameter object.
    org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [list]
    Caused by: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [list]


    第2次代码
    <insert id="batchAdd"   parameterType="java.util.List">
    	 <selectKey resultType="long" keyProperty="id" order="AFTER">  
            SELECT  
            LAST_INSERT_ID()  
        </selectKey>  
    		insert into
    		photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
    		values<foreach item="item" index="index" separator="," collection="list">
    			(#{item.bizid},#{item.cover},#{item.sort},#{item.url},#{item.name},#{item.remark},#{item.status},#{item.type},now(),now())
    		</foreach>
    </insert>


      批量插入成功了,但是id是null


      第3次代码
      Map map = new HashMap();
    map.put("list", toAddPhotoList);

    void batchAdd2(Map map);
    <insert id="batchAdd2" keyProperty="id" useGeneratedKeys="true">	
    		insert into
    		photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
    		values<foreach item="item" index="index" separator="," collection="list">
    			(#{item.bizid},#{item.cover},#{item.sort},#{item.url},#{item.name},#{item.remark},#{item.status},#{item.type},now(),now())
    		</foreach>
    	</insert>


      批量插入成功了,但是id是null
      
      在解决这个问题的过程中,我最初想实现“批量插入即可,心里默认为和插入1个一样,会有id”,
     后来为了“批量插入也要返回主键id”,最后我发现,"这是不能实现的"。
     
       mysql底层,insert values批量插入,返回的是“个数”。
       目前,不知道怎么去证实我的猜测。
       
       最后,附上单个插入的sql
       <insert id="add" keyProperty="id" useGeneratedKeys="true">
    		insert into photo(bizid,cover,sort,url,name,remark,status,type,addtime,uptime)
    		values(#{bizid},#{cover},#{sort},#{url},#{name},#{remark},#{status},#{type},now(),now())
    	</insert>

  • 相关阅读:
    机器学习之决策树与随机森林模型
    深度学习入门篇--手把手教你用 TensorFlow 训练模型
    Android 性能测试之方向与框架篇
    机器学习:从入门到第一个模型
    5分钟教你玩转 sklearn 机器学习(上)
    Hbase 技术细节笔记(上)
    五年 Web 开发者 star 的 github 整理说明
    腾讯云发布第三代云服务器矩阵,开放更强计算力赋能产业智能化
    为什么要用深度学习来做个性化推荐 CTR 预估
    云 MongoDB 优化让 LBS 服务性能提升十倍
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462665.html
Copyright © 2011-2022 走看看