今天看到公司实习写的代码。。。

1
2
3
4
5
6
7
for (Long id : ids) {
//查询
TbGoods tbGoods = goodsMapper.selectByPrimaryKey(id);
tbGoods.setIsDelete("1"); //逻辑删除
//修改
goodsMapper.updateByPrimaryKey(tbGoods);
}

这是,循环操作数据库?!

晕。。。希望以后不再看到这样的代码。。。

我给他写了个mapper.xml里的sql,用 where id in()替代,这样只有一条sql语句了

1
2
3
4
5
6
7
8
9
10
11
<!-- 根据主键查询数据 -->
<select id="selectByPrimaryKeys" resultMap="BaseResultMap" parameterType="list">
SELECT
<include refid="Base_Column_List"/> //查询结果
FROM tb_goods
WHERE id
IN
<foreach collection="list" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>

大家一定要注意千万不要循环调用数据库。。。

可以拼成一条长sql一次请求

批量操作也尽量拼接成多条sql然后一次请求