|
|
|
|
|
---
|
|
|
|
|
|
typora-copy-images-to: upload
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Spring boot
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
简介:
|
|
|
|
|
|
|
|
|
|
|
|
存钱
|
|
|
|
|
|
|
|
|
|
|
|
在开发这个程序中,我参照文献文章,创建了该项目并模仿该项目中的一些思路,在该项目中的原有的基础上结合自己的想法扩展所得到的一个属于自己的项目。并且这个项目的框架是基于Spring的平台所优化出来的新框架在行业中算是一个火热的Java EE框架。当然下面的记录都是我在开发期间,根据项目的所用到的技术,进行查找的资料和笔记。同时可能会有一些有关于技术点的原理知识,可当课外阅读看看。
|
|
|
|
|
|
|
|
|
|
|
|
### 项目配置
|
|
|
|
|
|
|
|
|
|
|
|
采用 Spring Boot + Mybatis-Plus + Thymaler + Bootstartp + JQuery
|
|
|
|
|
|
|
|
|
|
|
|
项目结构:
|
|
|
|
|
|
|
|
|
|
|
|
src 存放 主要代码
|
|
|
|
|
|
|
|
|
|
|
|
Controller ————存放控制器
|
|
|
|
|
|
|
|
|
|
|
|
POJO——————存放用户类
|
|
|
|
|
|
|
|
|
|
|
|
Util———————存放自定义工具
|
|
|
|
|
|
|
|
|
|
|
|
Service————— 存放服务(或业务)
|
|
|
|
|
|
|
|
|
|
|
|
Service 下的Impl —存放POJO的实现类(可能会省略)
|
|
|
|
|
|
|
|
|
|
|
|
Resources————存放静态文件和项目的全局配置文件
|
|
|
|
|
|
|
|
|
|
|
|
### 技术要点
|
|
|
|
|
|
|
|
|
|
|
|
##### 逻辑图
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##### 要点说明(问题及解决)
|
|
|
|
|
|
|
|
|
|
|
|
问题:
|
|
|
|
|
|
|
|
|
|
|
|
1. 
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
解决:将申请的user_id 等键值名更改为同POJO 下的Users类的变量名一样。就可以进行数据添加。但这样会引发出一个返回类型错误的信息。这是属于另外一个问题了。
|
|
|
|
|
|
|
|
|
|
|
|
2. 
|
|
|
|
|
|
|
|
|
|
|
|
图中,是我在运行项目时所产生的错误信息。图中所提到的错误是语法错误。但其不然,这是由于我在使用这个工具期间,更新了仓库信息,以及加上网速和电脑的运行卡顿导致项目索引出现的。
|
|
|
|
|
|
|
|
|
|
|
|
解决:
|
|
|
|
|
|
|
|
|
|
|
|
通过图中的操作方式就可以进行修复项目索引。接着勾选前三项,然后点击`Invalidate and Restart`
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
等待工具重启即可。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. 问题:
|
|
|
|
|
|
|
|
|
|
|
|
出现了 解决模板 [页面/删除] 时出错,模板可能不存在,或者任何已配置的模板解析程序都无法访问
|
|
|
|
|
|
|
|
|
|
|
|
> 注意⚠️,这里的终端还显示了Updates这个结果提示,就表明你所传入的数值是已经在数据库中执行完删除操作并显示出来结果。和所报的错误并没有关联。
|
|
|
|
|
|
|
|
|
|
|
|
解决:
|
|
|
|
|
|
|
|
|
|
|
|
我们可以在PostMapping 下面添加ResponseBody ,因为它所返回的结果类型是JSON。如果不添加这个注释的话会报上面的信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
技术:
|
|
|
|
|
|
|
|
|
|
|
|
1. 判断所提交否值是否一致。
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
这样可以进行一个数据添加。
|
|
|
|
|
|
|
|
|
|
|
|
4. 问题: 模糊查询 用户信息查询 以及 用户单字段使用。
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
获取用户信息,以及字段信息。
|
|
|
|
|
|
最近这段⌚中,我一直在思考如何获取单个用户信息,以及用户的字段值。
|
|
|
|
|
|
而我所采用的思路一直都从json角度来思考如何通过for来一一获取。
|
|
|
|
|
|
就在刚才,上网 查询资料时,想到,既然service.select 获取到的结果是一个列表类型的结果集。
|
|
|
|
|
|
能不能通过它的类型查找相应的简单获取列表中的字段值呢?
|
|
|
|
|
|
|
|
|
|
|
|
果不其然,我在这个https://blog.csdn.net/weixin_45397785/article/details/119815189 帖子中查询到
|
|
|
|
|
|
如果返回的结果是一个列表,我们可以通过列表中的size函数来了解这个结果中有多少个用户信息。
|
|
|
|
|
|
然后,将查询到的打印出来的值为18个。和数据库中的用户数量一致。
|
|
|
|
|
|
|
|
|
|
|
|
接着,我们通过列表对象内的get函数来获取第几个用户的信息。
|
|
|
|
|
|
此时刻,它所返回的类型则是一个用户类型的数据。
|
|
|
|
|
|
也就是一个用户对象。然后剩下的就不言而喻,我们通过,我们事先定义好的用户类内的方法来
|
|
|
|
|
|
获取这个用户对象内的字段值。
|
|
|
|
|
|
其中的代码为:
|
|
|
|
|
|
|
|
|
|
|
|
int in=2; // 定义一个数值来确定我们想要获取第几个用户的信息。
|
|
|
|
|
|
int size = service.select().size(); // 这里表示我们有多少个用户的信息。
|
|
|
|
|
|
|
|
|
|
|
|
// 接着我们用if 语句来判断这个列表的长度是否和我们想要的第几个用户的信息是否一样长。
|
|
|
|
|
|
// 当然这是个可有可无的判断。主要是为了方便自己的往后可以快速的了解信息。
|
|
|
|
|
|
// 所以才用这个老笨的办法。
|
|
|
|
|
|
if(size != in){
|
|
|
|
|
|
Users user = service.select.get(in);
|
|
|
|
|
|
// 这里我们可以试着打印这个对象是否和我们像要的对象是否一致。
|
|
|
|
|
|
System.out.println("用户信息:"+user);
|
|
|
|
|
|
// 如果不出意外是可以拿到用户的信息的。
|
|
|
|
|
|
String userName = user.getUserName();
|
|
|
|
|
|
System.out.println("用户名"+userName);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
这样以上的笔记就是我获取用户的思路。
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
5. 问题:设计模式—— ——单一职责原则 的使用问题。
|
|
|
|
|
|
|
|
|
|
|
|
> 学习了单一职责原则,了解到单一职责的作用,以下是在使用单一原则在本项目中所碰到问题。
|
|
|
|
|
|
|
|
|
|
|
|
(1)用户行为 [增删改查] 是否可以当作事务抽离出来?
|
|
|
|
|
|
|
|
|
|
|
|
(2)假如行为抽离出来,让其应用单一原则是否合适?
|
|
|
|
|
|
|
|
|
|
|
|
(3)抽离出来的事务应当如何处理?是AOP注入还是其他操作?
|
|
|
|
|
|
|
|
|
|
|
|
(4) 在开发中我意识到,不同模式应该挑选合适的模式。而不是单纯的追求某个模型中的技术要点而去强行加于不适合这个模型的情景模式。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. 问题:不同环境不同场景应该如何挑选开发模型和开发技术要点?
|
|
|
|
|
|
|
|
|
|
|
|
情景模式1:【图书管】可以采用正常的日常管理人员的单用户模式;【公司】可采用RBAC模式中各个版本模式;【电商】
|
|
|
|
|
|
|
|
|
|
|
|
在公司系统中,具有分层结构。可采用RBAC模式内的其他版本模型。
|
|
|
|
|
|
|
|
|
|
|
|
7. 问
|
|
|
|
|
|
|
|
|
|
|
|
8. 问
|
|
|
|
|
|
|
|
|
|
|
|
9. 问
|
|
|
|
|
|
|
|
|
|
|
|
10. 问
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 技术要点
|
|
|
|
|
|
|
|
|
|
|
|
多态————向上、向下转型
|
|
|
|
|
|
|
|
|
|
|
|
文章地址:[(14条消息) Java多态性(向上转型、向下转型)_zhao_miao的博客-CSDN博客_java多态向下转型](https://blog.csdn.net/zhao_miao/article/details/83750898)
|
|
|
|
|
|
|
|
|
|
|
|
### 数据渲染的方式
|
|
|
|
|
|
|
|
|
|
|
|
1. Spring boot 中可以通过ModelAndView来对数据进行渲染。
|
|
|
|
|
|
2. 也可以通过自定义的封装类+注释配合使用进行渲染。
|
|
|
|
|
|
3. 同时可以通过三方库(或框架)进行数据渲染。
|
|
|
|
|
|
|
|
|
|
|
|
这里我采用第一中方法。以及第二种方法混合使用渲染数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 总结心得
|
|
|
|
|
|
|
|
|
|
|
|
因为在区分用户的信息和行为中很难将其抽离哪些是行为,而这个行为是否可以当作一个事务以AOP的方式注入到每个业务中。并且在日常行为中,很容易混淆权限以及业务分配。【期间咨询了网上网友,了解到了业务分配问题】所以,在区分这个用户行为和信息时,前提自己还是得要多多了解和学习,什么是业务,什么是事务,以及AOP是否可以将事务从业务中抽离出来做成一个单独模块等等疑惑都是要自己去学习和解答。
|
|
|
|
|
|
|
|
|
|
|
|
### 文献资料
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
本次项目所参照的文献如下:
|
|
|
|
|
|
|
|
|
|
|
|
[2流高手速成记(之三):SpringBoot整合mybatis/mybatis-plus实现数据持久化 - 14号程序员 - 博客园 (cnblogs.com)](https://www.cnblogs.com/itfantasy/p/16735293.html)
|
|
|
|
|
|
|
|
|
|
|
|
[(12条消息) java中List集合三种获取集合元素方式_Hello World呀的博客-CSDN博客_java list 查找元素](https://blog.csdn.net/weixin_45397785/article/details/119815189)
|
|
|
|
|
|
|
|
|
|
|
|
模型资料
|
|
|
|
|
|
|
|
|
|
|
|
[零售/电商常用的用户分类模型 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/368720981)
|
|
|
|
|
|
|
|
|
|
|
|
[3种权限模型,快速定位设计目标 | 人人都是产品经理 (woshipm.com)](https://www.woshipm.com/ucd/1036860.html)
|
|
|
|
|
|
|
|
|
|
|
|
[如何防止订单重复支付? | 人人都是产品经理 (woshipm.com)](https://www.woshipm.com/pd/5661823.html)
|
|
|
|
|
|
|
|
|
|
|
|
[(13条消息) 小型电商平台系统需求分析文档_大菜彩的博客-CSDN博客_电商平台需求分析](https://blog.csdn.net/qq_53786696/article/details/124870066)
|
|
|
|
|
|
|
|
|
|
|
|
[博客设计--用例模型分析--用户管理用例 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/146929037)
|
|
|
|
|
|
|