跟着老师敲代码敲的是代码,但是敲不醒自己的思维。当我试图去捋清一个简单的操作在后端代码中的执行流程时(把所有包里面的内容去串成一条线),我发现不得不去弄清楚每一个层(包)的作用是什么,存在的意义又是什么。。。
页面:
有两个字段,用户名和密码,点击“立即注册”就是注册提交数据的关键

前端:
1.根据“立即注册”得到方法

2.方法submitForm该写什么?

3.通过方法得到后端使用的注册端口
后端地址的位置dev

在main.js中全局引入axios

后端:
1.根据前端得到的地址找到具体的controller层,并且找到register这个地址;业务逻辑是{看用户名是否重复,不重复就新增,重复就会提醒换一个}

1.1.到达DTO层,发现是前端的两个字段,而且还给字段的输入限定了长度

1.2到达Service层,

1.2.1用了MybatisPlus之后的service层的样子

1.2.2继续打开service的父类
1.2.3找到了getOne方法
GetOne是MybatisPlus提供的一种查询单条数据的方法,通过传入Entity对象,返回单挑符合条件的数据。

1.3也用到了实体层
字段变得多了,不再是前端和DTO层的两个字段用户名和密码;更像是映射我们数据库中表的字段

1.4我们也在这里发现了Result.java,它在common包中
我们在Result.java中看到了返回的信息,也就是说,操作成功没有都会给用户一个信息提示

1.5这里又调用了新增的方法
因为已经判断了用户名是否存在了,所以在用户名不存在的情况下就是可以将新用户存储到数据库里面了,也就是新增


不知道你是不是也发现了我们的持久层Mapper层和ServiceImpl包仿佛没有涉及一样;其实都是用到了的,不然想想,调用新增操作后怎么放进数据库表里面呢?SQL语句呢?
1.6总是因为“写”代码而忽略的一条暗线。
1.6.1发现注册方法有个service对象

1.6.2然后我们点击这个对象,可以看到还有一层

1.6.3【service的实现类】再次点击这个绿色的鼠标,进入到了service的实现类了,发现实现service接口(上面已经介绍过了)的同时,也继承了一个接口

1.6.4【持久层】这里是不是发现了SysUserMapper持久层

1.6.5BaseMapper里面是常用的方法

1.6.6在SystemUserMapper里面,也就是mapper层持久层发现红黑鸟,点击小鸟跳转;得到的是可以操作数据库的字段,因为MybatisPlus已经封装好部分的CRUD(create,read,update,delete)方法,不需要再写xml,只需要少量的配置就可以实现大部分的CRUD操作(增加,读取,更新,删除)


自己的总结:
当我们一步步去捋思路的时候就会发现每一个类都有自己存在的意义。抽丝剥茧必然有意义,但是抽完之后发现脑袋空空的。。。
逻辑上:
我们要完成注册功能,【是将用户的信息放在数据库的用户信息表里面】。
有的用户已经存在在数据库的用户表里面了,我们就不必要再存放一次了,那么【这里需要一个判断,判断用户名是否存在】。
用户名存在,我们就不存储在用户表里面,同时【需要返回给用户提示】,“您已经注册过了,可以直接登录咯”;
用户名不存在,需要将用户输入的信息放在数据库里面,怎么放进去呢?当然是【“新增”操作】啦,同时也需要提示用户注册成功可以直接登录了。
代码实现上:
1.用户输入个人信息,点击“提交”按钮,调用axios进行前后端交互
2.后端控制层controller接受前台数据
3.调用dto层进行展示层与服务层之间的数据传输(前端展示的字段属性,像实体层只不过字段少些)
4.之后调用service层业务层的实现类,实现业务逻辑
(服务层:里面是方法以及方法的数据类型)
(实现类:实现service层的接口,继承Mapper持久层的东西(不过是封装了方法))
5.方法的类型基本涉及实体类也就是entity层
6.entity层实体层,里面是对应数据库表的字段
7.service实现类继承了Mapper持久层,也是封装的方法和数据类型
8.之后Mapper持久层也就是dao层,可以调转到mapper.xml对数据库的表数据进行操作。
有所不足,以后涉及到再补充,mybatisPlus的知识有所欠缺。。。
每天进步一点,重在积累啦,不要垂头丧气,打起精神来呀!-致迷茫的自己和你