今天是刘小爱自学Java的第113天。
感谢你的观看,谢谢你。
话不多说,开始今天的学习:
image今天过后项目一也就算是结束了。
明天开始学SSM框架,再用SSM框架优化这个小项目作为练习。
我觉得框架是一个分水岭,所以决定对前段时间的学习状况做一个思想上的反思,双休时完成该任务,而今天的安排是:
-
先对昨天收藏业务代码的纠错,自己犯的一些错误点小结。
-
然后学下事务在项目中的使用。
-
最后说点闲话。
一、自己犯的一些错误
有的因为自己没有理解用法,只知道死记硬背,想当然的写代码。
有的纯粹就是一些低级错误。
1jdbcTemplate的使用
image关于查询操作与增删改操作的区别。
增删改操作是不需要映射器的,在昨天的编写代码过程中出过好几次这个错误。
我仔细想了想原因,发现是我将①和③弄混了。
①是修改操作,返回值是int类型。
但是它并不是从数据库中查询的一个结果,它只是用数字来判断修改是成功还是失败。
虽然我也不明白它为何不用boolean值判断。
③是查询操作,返回值也是int类型。
但是它是从数据库中查询出来的一个结果,上述是统计总条数,所以需要映射器。
2前端无法获取json数据
image这是我犯过好几次的一个错误,就是服务器响应数据成功,浏览器控制台上也能看到数据。
但是使用result就是无法取出数据。
后来才反应过来是前端json参数的问题,一检查果然是这样的。
凡是无法获取json数据,一般就是这个参数的问题,要么忘记写了,要么位置写错了。
3选择器
image这个不用多说,简直就是低级错误了,id选择器格式问题。
应该是当时给对应标签设置了一个id,然后直接就复制过来了,没有注意到格式问题。
二、事务管理
在收藏中,里面有业务逻辑是这样的:
- 用户点击收藏,收藏表添加一条数据。
- 同时商品表中的收藏数也要增加一。
昨天的代码有一个问题就是:收藏成功了,收藏表添加了一条数据。
但是增加商品表中的收藏数时失败了,最终收藏数并没有增加。
按照我们的业务需求,这样显然是不行的,这两个功能,要么同时成功要么同时失败。
在数据库中使用事务就能解决这个问题:
image①开启事务管理管理器
不要看这块的代码超级长,其实就是几个常见单词组成的:
- Transaction:事务的意思
- Synchronization:同步、锁的意思
- Manager:管理的意思
- init:初始化的意思
大致就可以理解成,将当前事务给初始化了一个锁,与所在的线程绑定。
②开启事务
事务默认是自动提交的,我们这里要手动提交,所以将事务自动提交设置成false。
再将template作为参数传入需要绑定的业务中,这样就将它们给绑定事务了。
③事务的提交与回滚
如果不报错,事务提交,调用commit方法即可。
如果报错,事务回滚,调用rollback方法即可。
④最后业务执行完后
将当前线程和该连接解锁。
image在dao层中,查询数据库使用的就是service层传来的参数了,也就是局部变量。
我们都知道,当全局变量和局部变量同名时,会优先使用局部变量。
三、说点闲话
这个小项目,有一些业务被我跳过了,没有做完,比如收藏模块的分页功能实现。
因为我前面花了近3天时间仔细学了商品模块的分页,它们的实现方式是一样的。
并且听说这种方式特low,有插件可以直接用,我想了想也就直接跳过了。
我在网上查了下,确实有一个叫layui的分页插件,据说挺好用的。
image关于项目部署什么的也被我跳过了,只能说以后学了项目二项目三之后再回头来学了。
主要是自己对于框架的学习也挺好奇的,天天有人对我说怎么不用框架,框架非常好用什么的。
弄得我都已经迫不及待地想要一探究竟了。
所幸我也不再磨叽了,直接开始框架学习,spring全家桶,我来啦!
最后
谢谢你的观看。
如果可以的话,麻烦帮忙点个赞,谢谢你。
网友评论