今天看到公司实习写的代码。。。
|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7
| hljs java 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
| hljs xml <!-- 根据主键查询数据 --> <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然后一次请求