使用if条件限制数据库最多存储10条数据不生效问题求助
代码错误排查
- 核心逻辑对象错误:你当前判断的是本次待插入的
beers数组的长度,而非数据库中已经存储的啤酒数据总条数,完全没命中你要限制总存储量的需求。 - 分支逻辑互斥无法触发异常:
if (beers.length != 0)的判断范围已经包含了beers.length == 10的情况,只要待插入数组不为空,就会直接走save逻辑,永远不会进入else if的抛异常分支。 - 判断时机错误:你将长度判断放在for循环内部,每次循环插入单条数据时都会重复执行无意义的判断,没有在插入前先做总容量校验。
修正后逻辑示例
// 先查询数据库现有啤酒总条数 long existingCount = beerRepository.count(); if (existingCount >= 10) { throw new RuntimeException("Database full!"); } // 校验通过后再插入本次的所有数据,可额外加剩余容量判断避免超存 int availableSize = 10 - (int) existingCount; int insertSize = Math.min(beers.length, availableSize); for (int i = 0; i < insertSize; i++) { beerRepository.save(beers[i]); } // 如果需要容量满了就完全不插入而非插满剩余容量,直接在校验后循环插入所有beers即可
内容的提问来源于stack exchange,提问作者markz
相关产品推荐
相关产品推荐

