JAVA学习之路以及第一次项目实战心得

JAVA学习之路以及第一次项目实战心得

前言:

​ 今天是2023年4月24日,突发奇想想写一篇学习心得。因为以前光顾着一直赶进度学习java,没有总结,也就不知道自己的哪些地方还有缺陷,还需要提高。


如何接触到java和学习过程

​ 我是在2021年底开始接触到java编程,当时到大学已经快一个半月了,每天在宿舍都十分闲,对学校各种部门那些又不感兴趣。这个时候我听说学校的工作室招新了,浅浅了解了一下,就毅然决然的报了名,然后通过了面试。

​ 在进入工作室后,学长学姐们给我们浅浅介绍了一下学习方向,当时听到java后端开发的时候,我就选择了它。当时并不知道后端开发是什么东西,去百度也搜索了一些资料。然后就是去b站看后端开发的学习路线。确定了学习路线,就开始了漫长的学习过程。

​ 在工作室,我认识了一位一样学习java后端的长路学长,是我非常想感谢的一位学长。他教我学习的方法,以及他学习踩得坑。他是我非常敬佩的人,是我学习前进的目标!!!

​ 我相信大部分学java的兄弟们梦开始的地方都是b站尚硅谷的宋红康老师吧。当时啃完java基础差不多花了四五个月的时间,当时才大一,学习的兴趣没那么大,也是边学边玩那种。然后学习mysql,jdbc,javaweb,然后就是漫长的框架学习。框架的学习真的让我感受到了java后端学习的恐怖程度,当时学习完全就是懵懵懂懂,以至于后来实在学不下去了,给自己放了一个月的假哈哈哈。

​ 在上个月,刚学完了springboot。就迫不及待的想拿个项目练练手。练手项目就是b站袁庭新老师的SpringBoot+MyBatis+MySQL电脑商城项目以前也做过一些小项目,做了一两天可能就放弃了,有的是因为实在不适合我这种什么都不懂的小白。但是这个项目讲的极其细致。在做项目每个功能之前,老师都会罗列出这个功能的三层都需要干些什么。帮助我们培养思维能力。思维能力是比技术重要非常多的,技术不会了去网上ctrl c v一下,但是思路是自己的。

这个老师讲的很慢,每一步干的什么事情都会告诉你,都会写下注释,视频好评如潮。


项目实战总结

我现在已经学完了商城项目的用户注册和登录功能,来浅浅把用户注册的思维逻辑做个总结:

首先,我们拿到手一个项目,先分析前端页面,就拿这个项目的注册页面来说

image-20230424221438977

Mapper层

设计接口和抽象方法及实现

用户注册是插入数据吧,那mapper层就需要一个insert方法

/**
 * 添加用户数据
 * @param user 用户数据
 * @return 受影响的行数
 */
public Integer insert(User user);

还有就是用户名不能重复,别人用过的用户名就不能在被重复注册了,那mapper层还需要一个判断注册时是否有相同用户名的方法findByUsername

/**
 * 根据用户名查询数据,来判断注册时是否有相同的用户名
 * @param name 用户名
 * @return 用户数据
 */
public User findByUsername(String name);

然后就要到mapper.xml文件中写sql语句了

单元测试

每个独立的层编写完毕后需要编写单元测试方法来测试当前的功能:在test包结构下创建一个mapper包,在这个包下再创建持久层的功能测试,单元测试方法是独立运行,不用启动整个项目,提高了代码的测试效率。

Service层

写完之后进入service层开发。在service层先创建service接口,创建用户注册方法

//用户注册功能
public void reg(User user);
规划异常

为什么需要规划异常?

比如,用户在进行注册时可能会产生用户名被占用的错误,这时需要抛出一个异常

如何处理?

异常不能用RuntimeException,太笼统了,开发者没办法第一时间定位到具体的错误类型上,我们可以定义具体的异常类型来继承这个异常.
正常的开发中异常又要分等级,可能是在业务层产生异常,可能是在控制层产生异常,所以可以创建一个业务层异常的基类,起名ServiceException异常,并使其继承RuntimeException异常
后期开发业务层时具体的异常可以再继承业务层的异常ServiceException

在service实现类中开始写我们的业务。

在实现类中判断用户名是否被占用,被占用则抛出异常

//优先判断用户名是否已经被注册
if(userMapper.findByUsername(user.getUsername()) != null){
   
    throw new UsernameDuplicatedException("用户名已存在");
}

Controller层

首先就是创建响应

状态码,状态描述信息,数据是所有控制层对应的方法都涉及到的操作,所以把这部分功能封装到一个类Result中,将这个类作为方法的返回值返回给前端浏览器

//以json格式的数据进行响应
public class Result<E> 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值