您的位置:首页 > 博客中心 > 互联网 >

mybatis批量问题

时间:2022-04-24 07:13

格言:好记性不如烂笔头


最近用到mybatis 批量插入和查询操作,现在把配置文件批量操作部分记录如下,为了日后查阅;



            useGeneratedKeys="true">
        insert into tracking_messageinfo(
        logEvent,resolution,operatorSystem,browser,colorDepth,flashVersion,javaEnabled,device,localIp,trackerCode,categroy,theme,userId,ip,region,sessionId,trackTime,guid,referrer,url,cookieId
        )
        values
                    separator=",">
            (
            #{tmiDO.logEvent},#{tmiDO.resolution},
            #{tmiDO.operatorSystem},#{tmiDO.browser},#{tmiDO.colorDepth},
            #{tmiDO.flashVersion},#{tmiDO.javaEnabled},#{tmiDO.device},
            #{tmiDO.localIp},#{tmiDO.trackerCode},#{tmiDO.categroy},#{tmiDO.theme},
            #{tmiDO.userId},#{tmiDO.ip},#{tmiDO.region},#{tmiDO.sessionId},#{tmiDO.trackTime},
            #{tmiDO.guid},#{tmiDO.referrer},#{tmiDO.url},#{tmiDO.cookieId}
            )
        

    


    
    

            useGeneratedKeys="true">
        insert into tracking_messageinfo(
        logEvent,resolution,operatorSystem,browser,colorDepth,flashVersion,javaEnabled,device,localIp,trackerCode,categroy,theme,userId,ip,region,sessionId,trackTime,guid,referrer,url,cookieId
        )values
                    separator=",">
            (
            
            
            )
        

    


以上的每个方法,包括注释掉了的方法都可以正常运行(去掉注释后),只是为了学习,留待以后查阅才这么写。


另外,引入网上找的一篇博客的文章:

要做批量插入数据库,首先得知道该数据库对批量插入所支持的语法。每个数据库批量插入的语法都不一样,我介绍两种。  
 MySQL:1、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,‘张三‘),(2,‘李四‘)  
               2、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,‘张三‘);INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,‘李四‘)  
 Oracle:1、INSERT INTO TABLE_NAME (ID,NAME) (SELECT 1,‘张三‘ from dual) union all (SELECT 2,‘李四‘ from dual)  
              2、INSERT INTO TABLE_NAME (ID,NAME) VALUES(1,‘张三‘);INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,‘李四‘)  
 4条SQL都是数据库支持的写法。两者的第二种是不推荐的写法,因为不管效率还是可读性上都远差于第一种  
 当然,还有更重要的一点,Mybatis不支持第二种写法,因为mybatis的一个事务只支持一条SQL  
 所以,Mybatis里写法只能取两者的第一种,代码如下  
 MySQL  
 


                INSERT INTO TABLE_NAME(ID,NAME) VALUES                
                        (#{itm.id},#{itm.name})                
        

 ORACLE:  
 


                INSERT INTO TABLE_NAME(ID,NAME) 
                
                        (SELECT #{itm.id},#{itm.name} FROM DUAL)                
        


注意事项: 这里要注意了,标签一定得是 标签都可以完成批量插入操作,批量更新没有试验过,想来也是一样的。

还有,经别人验证,oracle数据库必须是