当我们往数据库里面插入很多条的数据的时候,当一条一条往数据库里面插入的时候,这样每次都会去与数据库获得连接,会影响效率,
例如:
for(FilePublic f:FilePublicList){
f.setMonths(months);
f.setStatus(flag);
f.initCreate(ui); filePublicDao.insert(bean);//filePublicDao.update(bean);
}
当我们往数据库里面扔list的时候,这样就与数据库取得一次连接,节省了时间
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="java.util.List">
insert into file_vaccination
( id )values
<foreach collection="list" item="item" index="index" separator="," > (#{item.id,jdbcType=INTEGER} )
</foreach>
</insert>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="java.util.List">
update file_vaccination
<trim prefix="set" suffixOverrides=",">
<trim prefix="hf =case" suffix="end,">
<foreach collection="list" item="item" index="index">
<if test="item.hf != null" >
when id = #{item.id} then #{item.hf,jdbcType=DECIMAL}</if>
</foreach> </trim>
where id in
<foreach collection="list" index="index" item="item" separator="," open="(" close=")">
#{item.id, jdbcType=INTEGER} </foreach>
</update>
<!-- 边查询边插入数据 -->
此方法也可是可以批量插入数据的
<!-- 固定新增 -->
<insert id="insert" parameterType="FileVaccination(实体类)">
INSERT INTO file_public (months, userid, createtime, createuser, updatetime, updateuser)
SELECT #{months} months, su.id userid, #{createtime} createtime, #{createuser} createuser, #{updatetime} updatetime, #{updateuser} updateuser FROM sys_user su
WHERE su.is_del = 0
</insert>
<!--批量查询-->
//传过来的list里面是一个对象的形式
<if test="list!=null and list.size()=!0"></if>
select * from 表名where id in <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
#{item.id, jdbcType=INTEGER} </foreach>