开发QA项目所遇问题总结
真正的开发与想象中的开发总是不一致的,想象中的开发是文思泉涌,手底下妙笔生花。可现实是只要一个小小的调试不通过,你就要得浪费大把时间与精力,因此想要提高自己的开发效率,就一定要注意总结开发过程中遇到的问题。在说问题之前,我先总结一下自己的开发流程。
一、开发流程
1.首先搭建springboot项目,使用maven构建项目,在pom文件中引入持久层,web层,redis,等的相应依赖
2.使用Navicat运行sql文件生成对应的表,并在idea中开发对应的实体类
3.开发对应mapper,service,并撰写测试类
4.开发controller,配置swagger,使用postman测试
二、遇到问题
问题I:tkmybatis逻辑删除执行成功,在mysql中却没有改变数据的deleted属性
解决方案:
这个主要是因为在实体类中导错@Id的包,导入正确的包应该是javax.persistence。
问题II:如何把更新,删除的数据通知到redis
在解决这个问题之前,首先要知道redis在项目中的使用流程,当项目需要查询时
1.在redis中查询,有返回
2.redis中没有,就到mysql中查询
3.在mysql中查询数据有就将其设置到redis中,并返回
4.如果数据库与redis中都没有返回null
在这个流程中我们知道任何数据的查询都会先在redis中查找,因此,当我们删除数据库中的数据时,它依然会在redis中存在并返回,因此,如果我们不想让数据库中删除的数据继续被用户查询,或者更新的数据被用户查询不到,我们需要在设置redis的key的时候设置过期时间,设置过期时间的方法:
redisTemplate.expire(key,时间长度,时间单位)。
问题III:逻辑删除与物理删除
如果我没有使用tk的api,那么当我使用逻辑删除的时候,我的查询,更新,插入sql都需要改变,都要考虑被逻辑删除的数据,因此我选择使用tk的api,开发框架不就是来为我们开发人员节省时间与精力的吗
物理删除简单暴力,但是比较危险,在公司开发的话不适用。
问题IV:使用redis的时候写不进去?写进去了又读不出来?
想要使用redis,需要先把实体类序列化,序列化之后自然就能存进去
读不出来纯粹是自己逻辑写的不对,设置key的有重复,有的时候检查自己的逻辑也很重要。
问题V:jar包冲突,这是一个非常让人头疼的问题
springboot已经帮我们解决了大部分的jar包冲突,我遇到的jar包冲突是关于tk的,到网上收了对应版本的tkmybaits就ok了。
三、反思
写代码一定要细心,要动手,动手才能知道自己的问题,动手才能更好的锻炼自己代码的熟练度。