Mybatis Oracle数据库批量插入数据和返回新增数据的主键ID

近期在项目中用到了这些批量操作,记录一下自己对这些代码的理解。

第一种:Mapper层代码(包括Mapper映射文件和映射接口)

1.1  Mapper映射文件--------------------------------------------------------
    
    	
    	
    		
    		
    	
    	
    	
    		insert into DM_DS_VEST_RLAT (DM_DS_ID, VEST_TYPE_CODE)
    		
    		
    			( select #{item.dmDsId}, #{item.vestTypeCode} from dual)
    		
    	
    
    
1.2   Mapper接口如下:--------------------------------------------
public interface DmDsVestRlatMapper {
    // @Param注解的值要和foreach中的collection属性值一致(也就是都要是此处写的list)
    int addDmDsVestRlatInfo(@Param("list") List list); 
}

foreach属性值简单解释(只是本人的理解,如有错误之处请指正):

  1. collection属性值要和接口方法中的@Param注解值一致;
  2. item:表示循环体中的具体对象(例:有个List,那么item就可以看作代表User对象,item.age就类似User.age );具体说明:在 list 和数组中item代表其中的对象,在 map 中是 value,该参数为必选。(它是每一个元素进行迭代时的别名)
  3. index:在 list 和数组中,index 是元素的序号;在 map 中,index 是元素的 key。
  4. separator:表示foreach中sql语句以什么作为分隔符;
  5. open:表示该语句以什么开始;open:表示该语句以什么开始;
  6. close:表示该语句以什么结束

第二种(返回新插入的数据主键ID,一次新增一条数据):

 1.1 Mapper层映射文件代码(这种情况适合返回新插入的数据主键ID):--------------------------------------------
    
    
    	   
    	    
    			SELECT SEQ_DM_DS_MGR.nextval
    			id from dual
    		
    		
    	    insert into DM_DS_MGR  
    	    
    		   ID,
    		   DS_ENGLISH_NAME,
    		   DS_CHINESE_NAME,
    		   DS_CHINESE_NAME_PYM,
    		   CREATE_DATE,
    		   CREATE_USER_ID
    	     
    	    
    	       #{id},
    		   #{dsEnglishName},
    		   #{dsChineseName},
    		   #{dsChineseNamePym},
    		   SYSDATE,
    		   #{createUserId}
    	    
    	 
    	
    1.2 Mapper层映射接口方法 : ------------------------------------------
    public interface DmDsMgrMapper { 
         int addDmDsInfo(DmDsMgrEntity  entity);  
    }
     
   1.3 service层调用mapper层方法后如何获取主键ID值----------------------------------------------------
   // 假设已经将Mapper接口dmDsMgrMapper注入到service层了
   public ResultMessage addDmDsInfo(DmDsMgrEntity entity) {
      // 主键ID在配置文件中指定了为INPUT模式,此处不用关注ID的值
     /**
      *主键类型  AUTO:"数据库ID自增",
      *  INPUT:"用户输入ID",
      *  ID_WORKER:"全局唯一ID (数字类型唯一ID)",
      *  UUID:"全局唯一ID *UUID";
      *  -- mybatis-plus.global-config.db-config.id-type=INPUT
      *  -- mybatis-plus.global-config.db-config.db-type=ORACLE
      */
       int addDmDsNum = dmDsMgrMapper.addDmDsInfo(entity);
       // 当mapper层方法执行成功后我们直接用entity.getId()就可以取到新增数据的主键ID了
       System.out.println("返回的主键 :"+ entity.getId() );
   }

你可能感兴趣的:(Mybatis,JAVA)