插入
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 <= #{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以什么结束