mybatis-plus批量操作语句格式

插入

insert into table1 select * from table2;

特定字段插入

 insert into table1_name
            (    
                column1           ,
                column2           ,
                column3           ,
                columnN           ) 
        select  
                column1           ,
                column2           ,
                column3           ,
                columnN           
        from table2_name

批量插入

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.mapper.TableTempMapper">
    <insert id="insertBatch">
        insert into table_temp 
        (
                ch_name,
                en_name
        ) values
        <foreach collection="list" item="item" separator="," close=";">
            (
                #{item.chName},
                #{item.enName}
            )
        </foreach>
    </insert>
   
</mapper>

批量更新

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.mapper.TableTempMapper">
    <update id="updateBacth" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="" close=";" separator=";">
            update table_temp 
            set ch_name = #{item.chName},en_name = #{item.enName}
            where en_name = #{item.enName} AND ch_name = #{item.chName}    
        </foreach>
    </update>
    
</mapper>

条件为List

<select id="getSubjectTableList" parameterType="com.copote.data.manager.test.bean.entity.test.req.TableAnalysisReq"
    resultType="com.copote.data.manager.test.bean.entity.test.res.TableAnalysisResp">        
    select 
        count(1) ,
        testColumn 
    from (
        select testColumn from test_table 
        where create_time &lt;= #{tableDate} 
        <if test="testColumn != null  and testColumn.size()>0 ">
            and testColumn in 
            <foreach collection="testColumn" index="index" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if> 
        ) t
    GROUP BY testColumn
</select>

对应传参代码:

List<TableTempEntity> tempList = new ArrayList<TableTempEntity>();
.
.
.
tableTempMapper.insertBatch(tempList );
tableTempMapper.updateBacth(tempList );

注意:
经测试,parameterType可以不指定
updateBatch有可能报错,报错原因参考如下链接:
https://blog.csdn.net/qq_36434219/article/details/120591597

拓展:
foreach元素的属性主要有 item,index,collection,open,separator,close。
item集合中每一个元素进行迭代时的别名,
index表示在迭代过程中,每次迭代到的位置,
open该语句以什么开始,
separator在每次进行迭代之间以什么符号作为分隔 符,
close以什么结束

猜你喜欢

转载自blog.csdn.net/qq_36434219/article/details/120591729