mybatis批量操作(主要是更新)-crud+【mybatis自定义mapper:多表api的sql,自己写sql,写到自定义mapper里】

一、mybatis批量操作-crud:

参考:

批量增删查:https://blog.csdn.net/luo4105/article/details/77892889

===主要难点:批量修改。上面博客里还有种 批量更新。感觉更适合我这里“数据同步的需求”:

能够实现照搬过来最新的,旧的作废。

List
这是一个批量保存(插入或修改)的例子


    replace into xx (id, c1,c2) values
    
        (#{it.id},#{it.c1},#{it.c2})
    

replace:会根据主键和唯一索引判断该记录是否存在,存在就删除在插入(修改),不存在就插入(insert)。
--------------------- 
作者:逝兮诚 
来源:CSDN 
原文:https://blog.csdn.net/luo4105/article/details/77892889 
版权声明:本文为博主原创文章,转载请附上博文链接! 
  

===批量插入:经验就是:不需要判断if字段是否存在。所有字段一起插入即可。因为可以插入null。

 


批量改:https://www.cnblogs.com/exmyth/p/5757137.html

项目应用:
同步客户数据:从一张表每天凌晨2点,同步到当前系统客户表。

有的更新,没有的插入。唯一标识cid客户id。

 






    
        update public_cloud_customer
        

            
                
                    
                        when cid=#{i.cid} then #{i.cid}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.customerName}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.industryAreaLine}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.tlGroup}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.customerTam}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.customerCbm}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.customerGcLevel}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.gmtCreate}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.gmtModified}
                    
                
            
            
                
                    
                        when cid=#{i.cid} then #{i.isValid}
                    
                
            
        
        where
        
            cid=#{i.cid}
        
    

    
        insert into public_cloud_customer
        (
        cid,
        customer_name,
        industry_area_line,
        tl_group,
        customer_tam,
        customer_cbm,
        customer_gc_level,
        gmt_create,
        gmt_modified,
        is_valid
        )
        values
        
            (#{i.cid},#{i.customerName},#{i.industryAreaLine},#{i.tlGroup},#{i.customerTam},
            #{i.customerCbm},#{i.customerGcLevel},#{i.gmtCreate},#{i.gmtModified},#{i.isValid})
        
    






public interface PublicCloudCustomerApiMapper {

    int batchUpdate(@Param("list")List  toCustomerList);
    int batchInsert(@Param("list")List toCustomerList);
}

二、自定义mapper:很简单。

仿照生成的即可。

自定义sql语句。

自定义mapper,防止出现:自己写的sql如果写在了生成的mapper.xml时,

加字段,重新生成selectByExample这种配置时,导致自己写的sql丢失。

简单单表api生成的,不用写sql。减少错误。

多表api的sql,自己写sql,写到自定义mapper里。

 

 

 

 

 

 


 

你可能感兴趣的:(mybatis)