平台架构:springboot模块
parents,util,model,mapper,service,controller
使用技术汇总:
vue.js,layer.ui,webuploader,redis,Json
经验:
1.没有前端页面可以先写数据
2.json序列化前后端交互:前端ajax提交json字符串,后台接受数据,fastJson解析数据,处理后,再返回json数据,前端再接受
3.如果参数过多可以封装成bean
4.mybits的sql可以再navicat写好后粘贴过来
5.一定要尽可能少的调用mapper,每一次数据库操作都是进程通信,严重影响程序性能,高并发下,可能导致连接池不够用,程序挂掉。所以一定不要for循环mapper
6.再初拿到页面,可以先思考需要哪些模块;比如,如果有文件上传,可以思考使用哪个上传工具,上传之后的回显又用哪些工具;文件列表的筛选项有哪些;当把这些工具一个个实现完成,到后面只需要微改就可以复用,可以提高开发效率
7.枚举的使用:简单来说,枚举类其实就是一个普通的类,但是它事先定好几个已知的类,通过get方法获取类中的数值
8.resultapi:我们需要返回统一的json数据结构,所以要事先定义好返回的json类,一般包状态码code,返回信息msg及数据data,springmvc自带返回json的注解,所以只要返回自定义的jsonBean即可;同时ajax要对各种状态进行相应处理。
9.整套的异常处理:
9.1所有的tryCatch都应该在controller捕获,如果异常返回对应的errBean,因为service层中我们会在增删改上使用事务的注解,而事务的注解触发需要运行时异常,如果trycatch捕获了运行时异常 ,事务就不会触发。
9.2但是在查询时可以在Service使用tryCatch来解决一些小问题,比如点赞数等,这些数据存在缓存中,拿到拿不到都不该影响整体的查询;
9.3总体来说,异常的处理就是在service层上抛,controller捕获处理
10.redis缓存:springboot代redis模版,可以直接拿来使用;使用中要注意数据类型转换容易出问题;使用redis链接时,本地需要装redis客户端
11.尽可能把业务都拉到service层处理,controller来显示界面跳转
12.使用vue可以提高开发效率,静态展示数据还是可以用themleaf处理,但是动态交互数据,vue真的十分强大
13.写完代码回头看看。。很多是可以优化的
14.将不同的操作写在不同的controller中可以方便的加拦截器
15.model中不一定要和数据库一一对应,可以适当增添临时字段,如果为了解决一类问题,有些model可以实现相同接口
16.校验需要在前后台都加,如果觉得很麻烦,就把不同类型的校验封装成方法,重复调用。
坑:
1.使用pageHelper插件,如果在mybits中写left join查询会导致数据总数过多,原因是sql的笛卡儿积;解决方法,关联查询在service层分成2步,先查主体,再通过主体的id,去从表查询,从表的id 再sql中用in查询
2.vue模块中``在ie中目前不兼容。。
3.用户不能操作的功能,还是隐藏了比较好
4.如果可以尽可能不要修改别人js的源码
待续。。。
网友评论