一、MVC
1、view --> controller --> service(impl) --> dao(sql.xml)
(1)service可否相互调用?
具体看项目需求,一般可以,例如不同模块调用服务
但是dao层不要相互调用,一个dao就和本表及其密切相关的表进行CRUD即可
(2)controll和service?
在MVC架构前期(jsp的时候)我的理解是controll做三件事情
- 接收参数 getParameter
- 调用对应service处理业务逻辑
- 进行页面的跳转
但是目前 单页应用 + SpringMVC的传参去掉了我们的第一步和第三步,所有我感觉Controller层有点没用了,往往里面只用一条语句(就是调用service),所有我不太理解controller层存在的必要性在哪里?
目前Controller主要的功能
(1)参数校验(非空、正则等等)
这些东西前端多数可以做,但是如果别人懂js的话,可以在浏览器中把你的规则去掉,所有安全性要求高的话,后端也需要进行参数校验
而一些需要查询后台数据库的东西,比如用户id不能重复等等,就不能单纯在前端做了(特别现在前端模块化,前端除用户交互外,也要避免做太多的逻辑)
(2)异常捕获(注:springboot统一的异常捕获)
(3)较轻的业务逻辑
二、DB
1、尽量避免使用嵌套循环
因为外层每查询一条,内层查询就会执行一次,效率低(据说,没实验过)
2、联表查询的规范
尽量一条搞定,重新写一个接口
避免for循环里面去执行sql(因为sql的连接需要资源?连接池?)