谷粒商城小心得

1.首先先把数据库的表关系整明白,然后再把表字段整明白

2.做业务逻辑操作时,能一次查询的就一次查询,查询完了在封装处理数据,例如一级分类,二级分类,

3.关于回显,可能不是简单的,回显出当前数据,可能还得展示其他的
例如,完整的分类的 path([一级,二级,三级分类]),这样可以展示出,完整的path,给用户选择

4.一般,做查询的时候,用reqeustParam() Map 来接收 数据量大的参数,但是用这种方法,前提是,你要的数据都是string类型的,不用做数据类型转化,,格式化啥的,因为Map的 value都是string类型的
然后map存的都是通用的 参数列表,其他特定的可以用@pathvarible接收

5.特别是,查询的时候,会有一个通用的请求参数,例如
{
page: 1,//当前页码
limit: 10,//每页记录数
sidx: ‘id’,//排序字段
order: ‘asc/desc’,//排序方式
key: ‘华为’//检索关键字 可以是任意字段,所以sql的时候,要用( or or or )分开,至于那几个字段,看文档
}

关于检索字段,前端一般用 key来表示,后台和前台文档约定好,前台的key检索字段用在 表中的 那几个字段的检索(一般是模糊匹配 name , id…)而且前台的检索框如果有多个的话,那么key只是其中一个,其他的检索字段 可以检索 表中的其他的字段而且在 拼接这些条件的时候要特别注意,不是全部都是 and连接的,有的是要用(or or)和 and 分隔开的,一把 key的检索条件用(or or)和 其他检索条件用 and 拼接

一般这种,我们直接用Map接收(前提都是String),想要获取啥,就获取啥,既不用 准备各种各样的实体类来接收,还怕请求参数一变,实体类就要变,也不用@requestParam(""),无法确定到底用几个@reqeustParam(""),直接先一股脑 用Map接收,后面用哪些,就取哪些值

6.多对多的表关系,一般insert和update的时候,都是先插数据,然后再插关联表,修改的时候,也是可以修改表,与关联表

7.多对多的关联表,首先得存两张关联表的主键id,然后还得添加,一些常用的必要冗余字段(这些字段都来自,那两张关联表),避免查完关联表后,再去拿着主键id,去那两张表中查
但是,一旦设计了冗余字段,那么再修改了任意一张表(里面的冗余字段做了修改),那么关联表也得做修改

重要:一旦关联表出现了冗余字段(有关联关系的两张表的某些字段做 关联表的冗余字段,便于查询效率),那么要注意,修改的表的同时,也得修改其关联表的冗余字段,所以我们一开始整理表关系的时候,首先就得看关联表有没有冗余字段,有,那么在 写 表的 update方法的时候不仅要update表,还得update关联表的冗余字段

以后冗余字段的设计还会有很多,一般关联表的那两张表的数据量很大,都会避免查完关联表再去查询那两张表,都会设计冗余字段,所以在设计之初,你整理表关系的时候,就得关注冗余字段

8.关联表也是一个功能块,与有关联的两张表要区分开,例如查询所有关联数据,insert关联数据,…都是在 关联表controller里面的

9.能不用关联查询就不用关联查询,因为关联查询一定首先会先生成笛卡尔积,然后根据关联条件筛选

10.我们根据文档,来创建vo的时候,可以将文档的 json数据,用工具直接转换成 javabean(在我们有时 理不清 bean中的 字段关系的时候用 效果极好)

11.大部分处理的时候,都可以来一个 为null判断是否进行下面的操作,例如insert,update…

12.在与 datebase打交道的时候,都必须将 Vo 的数据 保存到 poji中,poji与数据库打交道,这时规范
而接收和返回的时候,都用 Vo , 这是规范

13.在业务中,没有什么通用逻辑,都是根据表的设计,业务的设计,文档接口的规范来编写不同的逻辑,当两个业务极为接近时,有两种方法
1.一个接口管两个业务(这时就得有 细微的判断 将两种业务区分开)
2.两个业务两个接口(优选)

14.VO DO DTO TO的区别:
VO 对应于页面上需要显示的数据,
DO 对应于数据库中存储的数据,
DTO 对应于除二者之外需要进行传递的数据
TO 用于远程调用传递的数据,一般可以定义在 common公共服务里面
DTO 是在一个系统内的中间传递数据,TO是在两个系统间的传递数据

15.设置服务的批量重启 + 每个服务的内存占用
1.内存占用:Edit configurations ->每个服务的 Environment中修改VM options
2.设置批量重启: Edit configurations -> + -> compound -> 将all service都添加进 compound中,并修改compound的 name ,下次启动就启动compound即可

16.注意,service只要涉及了多次 增删改操作,一定要加事务控制

17.权限管理中的用户表,和登入注册的用户表是不同库的两张表,有不同的作用

18.有时前端 update和insert操作 都是访问的一个接口,我们需要判断是update 还是 insert 然后再操作,一般表中有数据就是update,表中没有前端传来的这个数据,就是insert

19.在服务调用的时候,也可以走网关,访问网关,然后网关请求转发

20.服务调用的参数列表的 requestBody javabean, 这个bean可以和被调用端的 bean不一样的,只要json一样就行,因为feign调用的接口的requestBody是将 bean 转换成 json字符串,然后发的请求给被调用端

21.如果前后端不分离

	1.用static 存 我们静态资源(js,css..)
	
	2.页面html存在 template下
		1.如果想要直接访问到,必须添加 这个目录下的 静态资源处理器
		2.如果是 用接口请求跳转到 template下的页面则不用 添加静态资源处理器
		3.springboot启动,直接访问 http://localhost:port , springboot会去 Resource下 找 index.html,
		  而index.html 也存在 template目录下,这个也是不用 添加 静态资源处理器的

	3.而且静态资源的访问,我们 用 nginx直接配置 动静分离,即静态页面的访问,直接有 nginx访问并返回,
	  不由 springboot的 servlet处理,减轻tomcat的压力
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值