当前位置: 首页 > wzjs >正文

温州建站费用广州新塘网站seo优化

温州建站费用,广州新塘网站seo优化,东莞做网站电话,做网站买狗怎么样AssertUtil 方法的作用 在写代码时,我们经常需要检查某些条件是否满足,比如: 用户名是否已被占用? 输入的邮箱格式是否正确? 用户是否有权限执行某个操作? 一般情况下,我们可能会这样写&am…

AssertUtil 方法的作用

在写代码时,我们经常需要检查某些条件是否满足,比如:

  • 用户名是否已被占用?

  • 输入的邮箱格式是否正确?

  • 用户是否有权限执行某个操作?

一般情况下,我们可能会这样写:

if (oldUser != null) {throw new RuntimeException("名字已经被抢占了,请换一个");
}

但这样写会导致代码里充满 if 语句,看起来冗长又杂乱。AssertUtil 提供了一种更简洁的方法,让我们可以用“断言”来进行业务校验。例如:

AssertUtil.isEmpty(oldUser, "名字已经被抢占了,请换一个");

这样做的好处
代码更清爽:减少 if 判断,让逻辑更直观
提高可读性:一眼就能看出校验规则
减少出错率:避免遗漏某些情况

总之,AssertUtil 就是一个“自动检查器”,当条件不满足时,它会直接抛出异常,让我们不必手动 if 判断,提高代码质量!

校验方法的完善

        在项目中,我们可以用 AssertUtil 来优化业务校验,避免冗长的 if 语句。但默认的 AssertUtil 可能不够全面,需要根据需求进行扩展,让校验更灵活、更强大。

1. 使用 JUnit 提供的断言方法

JUnit 自带了一些 Assert 断言方法,我们可以直接拿来用,比如:

Assert.assertNull(oldUser, "名字已经被抢占了,请换一个");

这个方法的意思是:如果 oldUser 不是空的,就抛出异常,提示用户换个名字。

2. 自定义更丰富的校验方法

AssertUtil 只是一个工具类,我们可以自己添加更多校验逻辑,比如:

  • 判断字符串是否为空

  • 判断数字是否在某个范围内

  • 检查集合是否为空

例如,扩展 AssertUtil 让它支持字符串校验:

public static void isNotEmpty(String str, String message) {if (str == null || str.trim().isEmpty()) {throw new IllegalArgumentException(message);}
}

这样,我们就可以这样用:

AssertUtil.isNotEmpty(userName, "用户名不能为空!");

3. 让校验更高效

        用 AssertUtil 统一管理校验逻辑,可以减少重复代码,也能让业务逻辑更清晰。这样一来,我们的代码既简洁又不容易出错!

获取最老的改名卡

在用户的背包里,可能有多张改名卡,但我们希望优先使用最早获得的那一张。为此,我们需要写一个方法来找到最老的改名卡

1. 什么是“最老的改名卡”?

  • 每张改名卡在用户背包里都有一个获取时间

  • 最老的改名卡就是获取时间最早的那一张。

2. 如何找到最老的改名卡?

我们可以写一个方法 getFirstValidItem(),去数据库里查询用户的改名卡,并按照时间排序,拿出最早的那一张。例如:

public Item getFirstValidItem(Long userId) {return itemMapper.selectOne(new LambdaQueryWrapper<Item>().eq(Item::getUserId, userId)  // 找到该用户的物品.eq(Item::getType, "rename_card")  // 只查改名卡.eq(Item::getStatus, "No")  // 只查“未使用”的.orderByAsc(Item::getCreateTime)  // 按获取时间排序(最早的排前面).last("LIMIT 1")  // 只取第一条);
}

3. 这样做的好处

精准找到可用的改名卡,不会误用其他物品
优先使用最早的改名卡,避免资源浪费
查询效率高,只取一条数据,性能更好

这样,每次改名时,我们都能确保使用的是最早获得的改名卡,而不会跳过某些未使用的卡!

使用改名卡的逻辑

当用户想要修改名字时,我们需要确保他有一张未使用的改名卡,然后再完成改名操作。整个过程可以拆分为 三步

1. 检查用户是否有改名卡

首先,我们要去用户的背包里找一张未使用的改名卡,如果没有,就提示用户无法改名

Item renameCard = getFirstValidItem(userId);
if (renameCard == null) {throw new RuntimeException("没有可用的改名卡!");
}

注意:这里调用了 getFirstValidItem(userId) 方法,它会从用户的物品里找到**获取时间最早、状态为“未使用”**的改名卡。

2. 使用改名卡(标记为已使用)

找到改名卡后,我们要把它的 状态从 "No" 改成 "Yes",表示这张卡已经用掉了。

renameCard.setStatus("Yes");
itemMapper.updateById(renameCard);

3. 修改用户名

确保改名卡已被扣除后,我们再去修改用户的名字:

User user = userMapper.selectById(userId);
user.setName(newName);
userMapper.updateById(user);

完整代码(加上事务保证数据安全)

@Transactional(rollbackFor = Exception.class)
public void modifyName(Long userId, String newName) {// 1. 获取最老的改名卡Item renameCard = getFirstValidItem(userId);if (renameCard == null) {throw new RuntimeException("没有可用的改名卡!");}// 2. 扣除改名卡(标记为已使用)renameCard.setStatus("Yes");itemMapper.updateById(renameCard);// 3. 修改用户名User user = userMapper.selectById(userId);user.setName(newName);userMapper.updateById(user);
}

这样做的好处

确保用户必须有改名卡才能改名
先扣卡,再改名,避免出现“白嫖”改名的情况
加上 @Transactional,保证改名失败时不会白扣改名卡

这样,用户的改名流程就顺畅又安全啦!🎉

事务管理

在修改用户名的过程中,我们需要确保数据修改的安全性,避免出现改名卡被扣除但用户名却没修改成功的情况。这时,我们就需要用到 事务管理(Transaction)

1. 什么是事务?

简单来说,事务就是一组数据库操作的“打包”,要么全部成功,要么全部失败,保证数据的一致性。比如:

  • 扣除改名卡(修改 statusYes

  • 更新用户名(修改 user 表的 name

如果其中某一步失败了,就不能让另一部分生效,否则数据就会乱掉。

2. 如何使用事务?

在 Spring Boot 里,我们可以用 @Transactional 注解,让整个改名操作成为一个事务。例如:

@Transactional(rollbackFor = Exception.class)
public void modifyName(Long userId, String newName) {// 1. 获取最老的改名卡Item renameCard = getFirstValidItem(userId);if (renameCard == null) {throw new RuntimeException("没有可用的改名卡!");}// 2. 扣除改名卡(把 status 改为 Yes)renameCard.setStatus("Yes");itemMapper.updateById(renameCard);// 3. 修改用户名User user = userMapper.selectById(userId);user.setName(newName);userMapper.updateById(user);
}

3. @Transactional 的作用

  • 如果代码执行成功,数据库提交更改 ✅

  • 如果中间某一步失败(比如数据库异常),自动回滚,让数据恢复原样 ❌

这样,我们就能确保数据一致性,避免出现扣了改名卡但名字没改成功的情况!

http://www.dtcms.com/wzjs/430957.html

相关文章:

  • 修改wordpress默认的登陆地址关键词优化排名费用
  • 东莞网站建设服务商网络推广教程
  • win2012 iis配置网站百度搜索app
  • wordpress邀请码插件什么叫做seo
  • 上海公安门户网站网址安徽网站关键字优化
  • 龙岗 网站建设深圳信科搜索引擎seo关键词优化方法
  • 域名注册好了怎么做网站网址注册查询
  • 微小店网站建设多少钱seo怎么优化步骤
  • 软件开发专业就业前景如何seo自学网app
  • 一级做爰片软件网站微商软文范例大全100
  • wordpress变成中文上海单个关键词优化
  • 什么网站做美食最好最专业广东广州重大新闻
  • 科技网页模板seo培训资料
  • 网站建设分金手指专业十六河南品牌网站建设
  • 网站建设研究背景百度关键词查询排名
  • 党风廉政建设 杂志网站搜索引擎的营销方法有哪些
  • wordpress做的视听网站河南做网站的
  • 哈尔滨模板网站建设新站如何快速收录
  • 天津网站建设基本流程图2023第二波疫情已经到来了吗
  • 做招聘求职网站最近中国新闻热点大事件
  • 微软做网站软件日照网络推广公司
  • 物流专线做网站百度推广的方式有哪些
  • 企业网站建设解决方案报告论文免费自学电商教程
  • 微信公众平台内做网站手游推广平台有哪些
  • 推广型网站如何建站百度上如何发广告
  • 网业车怎么打车搜索引擎关键词优化方案
  • 做网站服务器哪种好下载优化大师安装桌面
  • 服装网站开发的需求分析苏州首页排名关键词优化
  • 郑州建设委员会网站青岛网络优化代理
  • 山西太原制作网站人有吗推广赚钱的软件排行