一、温馨提醒
1)接下来的内容,请抱着看戏的态度阅览
2)如果内容给您带来不适,请尽快关闭
二、情景还原
1)两周前,让我接手一个新项目
2)还没开始熟悉项目,需要让我两周内完成
3)项目流程与需求想结合,搞了两天,知道是怎么个情况
4)对比现在实现与需求调整,想吐的感觉油然而生
5)代码跟*一样,根本改不了。不带犹豫卷土重来,从0开始
6)跟*一样的代码,大概情况是这么个样子
1、MyBatis注解,Mapper都是注解,根本不想看
2、重复代码,copy又copy,有业务区别,直接加个if处理
3、一个方法恨不得1千行代码,根本不想读
4、丝毫没有注释,功能全靠猜
5、你见过把整个Service层做为Dubbo提供的Service层吗?不需要暴露的方法,全部给注册到ZK,根本没有消费者,项目启动慢如老狗
6、抱歉抱歉,没有控制好情绪,吐槽,留痕一下
三、作业实施
1)需求分析,数据表操作
1、把要调整数据表先整理出来
2、确定表结构不需要改动
3、部分表字段,必填改为选填,需要调整的业务梳理出来
2)需求概况与流程分析
1、因属于内部业务,具体流程就不表述了
3)代码结构设计
1、抽象流程,搞一搞
2、设计模式,用一用(策略模式)
3、枚举定义,加一加
4、方法定义,走一走
5、交互流程,定一定
6、公共业务处理,用父类
7、公共非业务处理,用工具类
8、通用魔法值,Constants
9、专用魔法值,private static
4)作业顺序
1、从Biz向上下作业
2、向上,Controller,然后View
3、向下,Service,然后DAO
4、向上向下,优先向下
四、MyBatis-Plus,看见MyBatis低版本,就不要奢望了
1)怎么定义MyBatis版本,以哪一版本为参考呢?
2)1.1.1以下的,就不要想了
3)MyBatis-Plus依赖MybatisSqlSessionFactoryBean(使用原生的SqlSessionFactoryBean的,也放弃吧,别乱搞;不是不可以搞,是代价有点高,我是吃不消)
五、生产事故
1)将SqlSessionFactoryBean,改成了MybatisSqlSessionFactoryBean
2)新增MyBatis,Mapper-xml方式(此时注解与xml方式并存,这个可以搞一下)
3)将MyBatis强行升级(1.1.1到MyBaits-Plus依赖的最低版本,应该是3.2.0,这个没确定)
4)导致结果
1、我的功能,么得问题
2、其他的部分功能模块,GG思密达
3、绩效被扣,认认认~~不过害的领导也被扣,有点儿过意不去
六、事故处理
1)还原最初的代码
2)MyBatis-Plus,拜了个拜
3)业务调整,用MyBaits把DAO层的方法加了一加(之前用的MyBatis-Plus的嘛)
4)测试一波,晚上看时间发版
七、建议一波
1)责任心可以有,看代价
2)不要怕出错,这次事故,学到了很多
八、出道题(非Java专业,请忽略)
1)代码A
2)代码B
3)问:代码A与代码B有什么区别?
4)答案先给出
1、代码B,MyBatis分页无效
2、原因,@Bean注解,Bean注册到Spring,仅注册一次(默认单例);代码B,SqlSessionFactoryBean在initSqlSessionFactoryBean()方法中,Bean已经创建,后续再赋值属性,并不会再次加载